2016-09-28 59 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