考虑到这段代码片段:
from os import walk
files = []
for (dirpath, _, filenames) in walk(mydir):
# More code that modifies files
if len(files) == 0: # <-- C1801
return None
Pylint对这条关于if语句行的消息感到震惊:
[pylint]C1801:不要使用
len(SEQUENCE)
作为条件值
乍一看,C1801规则听起来不太合理,definition on the reference guide规则也不能解释为什么这是一个问题.事实上,它直截了当地称之为incorrect use.
len-as-condition (C1801):
我的搜索try 也未能为我提供更深入的解释.我知道序列的长度属性可能会被延迟判断,__len__
可以被编程为有副作用,但单是这一点就足以让Pylint认为这样的使用是不正确的,这是值得怀疑的.因此,在我简单地将我的项目配置为忽略规则之前,我想知道我的推理是否遗漏了一些东西.
何时将len(SEQ)
用作条件值有问题?对于C1801,Pylint试图避免哪些主要情况?