考虑此代码段:
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):当Pylint检测到len(SEQUENCE)在条件内使用不正确时,不要使用len(SEQUENCE)
作为条件值。
我的搜索尝试也未能为我提供更深入的解释。我确实理解序列的长度属性可能会被延迟评估,并且\uuu len\uuuu
可以被编程为具有副作用,但仅此一点就足以让Pylint认为这样的使用是不正确的,这是值得怀疑的。因此,在我将我的项目配置为忽略规则之前,我想知道我的推理是否遗漏了一些东西。
什么时候使用len(SEQ)
作为条件值有问题?Pylint使用C1801试图避免哪些主要情况?
这是Pylint中的一个问题,它不再认为len(x)==0
不正确。
您不应该使用裸len(x)
作为条件。比较len(x)
与显式值,如if len(x)==0
ofif len(x)
政治公众人物8:
# Correct:
if not seq:
if seq:
# Wrong:
if len(seq):
if not len(seq):
请注意,不禁止明确测试长度。蟒蛇的禅宗说:
显性比隐性好。
在
if not seq
和if not len(seq)
之间的选择中,两者都是隐式的,但行为不同。但是如果len(seq)==0或
如果len(seq)
在Pylint中,PR 2815修复了这个bug,最初报告为问题2684。它将继续抱怨
if len(seq)
,但不再抱怨if len(seq)
请注意,在使用NumPy数组时,实际上需要使用len(seq)(而不仅仅是检查seq的bool值)。
a = numpy.array(range(10))
if a:
print "a is not empty"
导致异常:ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
因此,对于同时使用Python列表和NumPy数组的代码来说,C1801消息没有什么帮助。
什么时候使用len(SEQ)
作为条件值有问题?Pylint使用C1801试图避免哪些主要情况?
使用len(SEQUENCE)
并没有什么问题,尽管它可能没有那么有效(参见切普纳的评论)。不管怎样,Pylint检查代码是否符合PEP 8样式指南,该指南规定
对于序列(字符串、列表、元组),使用空序列为false这一事实。
Yes: if not seq:
if seq:
No: if len(seq):
if not len(seq):
作为一个偶尔在语言之间飞过的Python程序员,我会认为
False
这一事实被认为更“Pythonic”。
问题内容: 尝试编译时出现“不是语句”的编译错误,代码为: 当这些功能是: 有任何想法吗? 问题答案: 是的,您不能像这样使用条件运算符。其目的是计算一个或另一个 表达式 。它并不是要选择一个要执行的 语句 或另一条 语句 的方法。 只需使用:
我看过一些代码,其中人们使用了带有两个“!”的条件子句s 这是我能找到的一些例子。 使用有什么好处超过?
在我的代码中,我有以下行: 在野外,它生活在一个枚举中: 我从sonarqube那里得到以下提及: 使“形状”暂时或可序列化。可序列化类中的字段本身必须是可序列化的或瞬态的,即使该类从未显式序列化或反序列化。这是因为在负载下,大多数J2EE应用程序框架都会将对象刷新到磁盘,而一个据称具有非瞬态、非序列化数据成员的可序列化对象可能会导致程序崩溃,并为攻击者打开大门。 据我所知,int[](和int[
为什么这个字符串是数字的?那些字符代表什么?
我听到一些人说,即使在使用获得种子之后,使用也是很糟糕的。为什么会这样?我想知道事情是怎么发生的...抱歉,我又问了一个问题..但是,有什么办法可以替代这一点呢?
我试图使用Jackson的XMLMapper将对象序列化为XML。我希望它在适当的区域有名称空间。然而,当我序列化对象时,每个属性都有一个名称空间--直接属于我试图序列化的类的属性将有一个xmlns=“”,被引用类上的每个属性都包含它们自己的名称空间前缀(而不是整个被引用类的单个前缀)。 我用的是杰克逊2.9.8 我要序列化的主类: 一种特殊类型: XmlMapper配置和测试: 实际的XML输出