「假」我試圖運行這段代碼:「真」,並在Python
path = '/bla/bla/bla'
if path is True:
print "True"
else:
print "False"
而且它打印假。我以爲Python會將任何有價值的東西視爲真。這是爲什麼發生?
「假」我試圖運行這段代碼:「真」,並在Python
path = '/bla/bla/bla'
if path is True:
print "True"
else:
print "False"
而且它打印假。我以爲Python會將任何有價值的東西視爲真。這是爲什麼發生?
從http://docs.python.org/reference/expressions.html#boolean-operations:
在布爾操作的上下文中,以及當表達式通過控制流語句中使用的,下面的值被解釋爲假:False時,無,數字零所有類型,空字符串和容器(包括字符串,元組,列表,字典,集合和frozensets)。所有其他值都被解釋爲true。
的關鍵措辭在這裏,我想你是誤會「解釋爲假」或「解釋爲真」。這並不意味着這些值中的任何一個與True或False相同,甚至等於True或False。其中一個布爾表達式預期(如在if
語句)
表達'/bla/bla/bla'
將被視爲真實的,但表達'/bla/bla/bla' is True
和'/bla/bla/bla' == True
將評估爲False在伊格納西奧的答案的原因。
is
比較身份。一個字符串永遠不會與非字符串相同。
==
是平等的。但是字符串永遠不會等於True
或False
。
你都不想。
path = '/bla/bla/bla'
if path:
print "True"
else:
print "False"
+1我認爲這是低估的誤解。也許這有助於知道有一個「布爾函數」將一個值「解釋」爲布爾值。你可以說這個函數在每個if語句中都隱含地調用(這在技術意義上可能不是真的,但至少添加它永遠不會改變if語句的行爲)。 – 2011-02-25 17:00:35