2011-02-25 58 views
40

「假」我試圖運行這段代碼:「真」,並在Python

path = '/bla/bla/bla' 

if path is True: 
    print "True" 
else: 
    print "False" 

而且它打印。我以爲Python會將任何有價值的東西視爲。這是爲什麼發生?

回答

57

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在伊格納西奧的答案的原因。

+6

+1我認爲這是低估的誤解。也許這有助於知道有一個「布爾函數」將一個值「解釋」爲布爾值。你可以說這個函數在每個if語句中都隱含地調用(這在技術意義上可能不是真的,但至少添加它永遠不會改變if語句的行爲)。 – 2011-02-25 17:00:35

88

is比較身份。一個字符串永遠不會與非字符串相同。

==是平等的。但是字符串永遠不會等於TrueFalse

你都不想。

path = '/bla/bla/bla' 

if path: 
    print "True" 
else: 
    print "False"