2014-04-14 39 views
0

今天來到並調試,發現我預測與not aDict=={}的處理方式不同的行爲有偏差。知道有人能否突出這兩種形式之間的差異。不是字典而不是字典之間的差異== {}

偏差在下面的代碼行

if not aDictA and not aDictB: 

既造成了等於{},但如果條件不返回true。

行代碼改爲

if not aDictA=={} and not aDictB=={}: 

和代碼工作正常。

回答

6

你認爲空字典在布爾上下文中是False是對的。因此,not {}empty_dict == {}是等效的,但是...

在第一個,你檢查他們是否是False

>>> not {} 
True 

但在第二個,你實際上是檢查,如果它們是空的(因此False),然後用not扭轉這一局面。

>>> not not {} # This is basically what you are doing. 
False 

您得到不同的結果,因爲您實際上沒有測試相同的條件。

相關問題