最佳答案
考虑以下代码片段:
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,乍一看,听起来不是很合理,参考指南上的定义没有解释为什么这是一个问题。事实上,它直接称其为不正确的使用。
< p > len-as-condition (C1801): 当Pylint检测到条件中不正确使用len(sequence)时使用。
我的搜索也没能给我一个更深刻的解释。我确实理解序列的length属性可能会被惰性地求值,并且__len__
可以被编程为具有副作用,但值得怀疑的是,仅这一点是否足以让Pylint认为这样的使用是不正确的。因此,在我简单地配置我的项目以忽略规则之前,我想知道我是否在推理中遗漏了一些东西。
什么时候使用len(SEQ)
作为条件值有问题?Pylint试图在C1801中避免哪些主要情况?