被簡化我有下面的代碼,可以重現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與'[]'是一樣的。 –