被简化我有下面的代码,可以重现PyCharm
警告,可以表达可以在布尔值
表达简化
该表达检测具有一个布尔值相等比较。
seq_group = []
if seq_group == []: # warning here
print("it is empty.")
如果我改变了代码,
if seq_group is None:
将修复警告,但真正的问题是,是None
和[]
emplty名单是一回事吗?
欢呼
被简化我有下面的代码,可以重现PyCharm
警告,可以表达可以在布尔值
表达简化
该表达检测具有一个布尔值相等比较。
seq_group = []
if seq_group == []: # warning here
print("it is empty.")
如果我改变了代码,
if seq_group is None:
将修复警告,但真正的问题是,是None
和[]
emplty名单是一回事吗?
欢呼
是
None
和[]
空列表是一回事吗?
不,它会导致错误的行为:
seq_group = []
if seq_group is None:
print("it is empty")
这不显示任何信息,None
是[]
,价值和身份明智的完全不同。 None
表示没有值,[]
表示没有值的列表。这种混淆可能是由于两者恰好在条件中评估False
。
警告可能是由于这样的事实,你可以简单地使用seq_group
与not
而是采用文字与==
:
if not seq_group:
print("it is empty")
我还发现如果'seq_group = None 如果不是seq_group: print(“it is none”)','is none'将被打印,这意味着'not'在某个对象为None时也有效'。 – daiyue
我会同意@ŁukaszRogalski我敢肯定,最多的回答修复警告。我有点犹豫要关闭,虽然实际问题是如果None与'[]'是一样的。 –