为什么Pylint认为在条件值中使用len(SEQUENCE)不正确?
考虑以下代码片段: 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在我看来并不十分合理,参考指南中的定义也无法解释为什么这是一个问题。实际上,它彻头彻尾地称其为不正确的用法。 len-as-condition(C1801): 不要len(SEQUENCE)用作条件值当Pylint检测到内部条件不正确使用len(sequence)时使用。 我的搜索尝试也未能为我提供更深入的解释。我确实知道,序列的length属性可能会被延迟评估,并且__len__可以编程为具有副作用,但是令人怀疑的是,仅此一个问题是否足以使Pylint认为这种用法不正确。因此,在我简单地将项目配置为忽略规则之前,我想知道我的推理中是否缺少某些内容。 什么时候将len(SEQ)用作条件值有问题?Pylint尝试使用C1801避免哪些主要情况?