2016-09-28 68 views
2

被简化我有下面的代码,可以重现PyCharm警告,可以表达可以在布尔值

表达简化

该表达检测具有一个布尔值相等比较。

seq_group = [] 
if seq_group == []: # warning here 
    print("it is empty.") 

如果我改变了代码,

if seq_group is None: 

将修复警告,但真正的问题是,是None[] emplty名单是一回事吗?

欢呼

+0

我会同意@ŁukaszRogalski我敢肯定,最多的回答修复警告。我有点犹豫要关闭,虽然实际问题是如果None与'[]'是一样的。 –

回答

3

None[]空列表是一回事吗?

不,它会导致错误的行为:

seq_group = [] 

if seq_group is None: 
    print("it is empty") 

这不显示任何信息,None[],价值和身份明智的完全不同。 None表示没有值,[]表示没有值的列表。这种混淆可能是由于两者恰好在条件中评估False

警告可能是由于这样的事实,你可以简单地使用seq_groupnot而是采用文字与==

if not seq_group: 
    print("it is empty") 
+0

我还发现如果'seq_group = None 如果不是seq_group: print(“it is none”)','is none'将被打印,这意味着'not'在某个对象为None时也有效'。 – daiyue