Considérant ce bout de code:
from os import walk
files = []
for (dirpath, _, filenames) in walk(mydir):
# more code that modifies files
if len(files) == 0: # <-- C1801
return None
J'ai été alarmée par Pylint avec ce message au sujet de la ligne avec l'instruction if:
[pylint] C1801:Ne pas utiliser
len(SEQUENCE)
comme valeur de condition
La règle C1801, à première vue, ne paraît pas très raisonnable pour moi, et la définition dans le guide de référence ne permet pas d'expliquer pourquoi c'est un problème. En fait, c'est carrément l'appelle d'une utilisation incorrecte.
len-que-condition (C1801): Ne pas utiliser
len(SEQUENCE)
comme condition de la valeur Utilisée lors de Pylint détecte une utilisation incorrecte de la len(séquence) à l'intérieur de conditions.
Mes tentatives de recherche n'ont pas réussi à me donner une explication plus approfondie. Je ne comprends qu'une séquence de longueur de propriété peut être paresseusement évaluée, et qu' __len__
peuvent être programmés pour avoir des effets secondaires, mais il est douteux que cela seul est assez problématique pour Pylint d'appeler une telle utilisation incorrecte. Donc, avant que je il suffit de configurer mon projet d'ignorer la règle, je voudrais savoir si il me manque quelque chose dans mon raisonnement.
Quand est l'utilisation de l' len(SEQ)
comme valeur de la condition problématique? Quelles sont les principales situations de Pylint tenter d'éviter avec C1801?