我經歷了Truthiness in Python並且瞭解到[]
和類似的空對象在Python中被解釋爲False
。Python的真實性 - 不同檢查之間的不同行爲
但是,當我在下文中REPL類型,則返回False
:
>>> [] == False
False
這怎麼可能?
我經歷了Truthiness in Python並且瞭解到[]
和類似的空對象在Python中被解釋爲False
。Python的真實性 - 不同檢查之間的不同行爲
但是,當我在下文中REPL類型,則返回False
:
>>> [] == False
False
這怎麼可能?
因爲==
不檢查真實性,所以它檢查平等。這兩個對象是不同的類型,所以它們不是平等的。
如果你想明確地看到物體的感實性,將其轉換爲布爾:
>>> bool([])
False
注意你永遠不會做這在真正的代碼,因爲感實性的一點是,轉換是隱式的。相反,你會怎麼做:
if my_value:
...do something...
因爲==返回如果對象等於其他平等......
在這種情況下,[]心不是沒有隻是一個空數組 如:
if variable:
print "true"
else:
print "false"
如果變量爲空字符串('')或空數組([]),則輸出false。
if variable == None:
print "true"
else:
print "false"
如果變量是空字符串(「」)或空數組([])這個打印出FASLE,因爲它不是無類型(它的類型等於STR或列表)。
==: 返回true如果2個變量相等
如果: 返回true如果變量不是無和北京時間不是空的實例(如空數組或字符串)
「那些兩個對象是不同類型的,所以它們不相等。「雖然它稍微複雜一些。例如。如果你用'def __eq __(self,other):return True'聲明自己的類,那麼該類的實例將等於任何(?)其他對象。 –
那麼,'if'語句本身隱式地將該轉換應用於'bool'?如果是這樣,那麼爲什麼它不會在'if [] == False'中應用相同的轉換?考慮到'[]'被解釋爲'False'並且'=='檢查值是否相等,它不應該返回'True'嗎? – chaudharyp
'[]'**絕對不是**被解釋爲False,這是不正確的。它在布爾上下文中是假的,就是這樣。 –