2016-04-08 33 views

回答

3

因爲==不檢查真實性,所以它檢查平等。這兩個對象是不同的類型,所以它們不是平等的。

如果你想明確地看到物體的感實性,將其轉換爲布爾:

>>> bool([]) 
False 

注意你永遠不會做這在真正的代碼,因爲感實性的一點是,轉換是隱式的。相反,你會怎麼做:

if my_value: 
    ...do something... 
+2

「那些兩個對象是不同類型的,所以它們不相等。「雖然它稍微複雜一些。例如。如果你用'def __eq __(self,other):return True'聲明自己的類,那麼該類的實例將等於任何(?)其他對象。 –

+0

那麼,'if'語句本身隱式地將該轉換應用於'bool'?如果是這樣,那麼爲什麼它不會在'if [] == False'中應用相同的轉換?考慮到'[]'被解釋爲'False'並且'=='檢查值是否相等,它不應該返回'True'嗎? – chaudharyp

+0

'[]'**絕對不是**被解釋爲False,這是不正確的。它在布爾上下文中是假的,就是這樣。 –

-2

因爲==返回如果對象等於其他平等......

在這種情況下,[]心不是沒有隻是一個空數組 如:

if variable: 
    print "true" 
else: 
    print "false" 

如果變量爲空字符串('')或空數組([]),則輸出false。

if variable == None: 
    print "true" 
else: 
    print "false" 

如果變量是空字符串(「」)或空數組([])這個打印出FASLE,因爲它不是無類型(它的類型等於STR或列表)。

==: 返回true如果2個變量相等

如果: 返回true如果變量不是無和北京時間不是空的實例(如空數組或字符串)

相關問題