2012-12-27 49 views
0

可能重複:
Why does 「[] == False」 evaluate to False when 「if not []」 succeeds?的Python:邏輯表達式是假的,但如果不小心

這怎麼可能是邏輯測試真一==產生假的,但如果a:作品?請參考下面

>>> a = bin(0) 
>>> if a: 
    print a == True, 'HOWWWW???????' 


False HOWWWW??????? 
>>> type(a) 
<type 'str'> 
>>> 
+0

Python有一個簡短的表達式列表,在本文檔中被評估爲false:http://docs.python.org/2/library/stdtypes.html#truth-value-testing –

回答

6

if語句不取決於該值是否等於true。這取決於bool(a)是否等於True,在這種情況下它是。非空字符串在布爾上下文中被認爲是真的。請參閱the documentation

0

行代碼,它似乎在Python你不能測試字符串是這樣的:

>>> a == False 
False 
>>> a == True 
False 
>>> 
+1

爲什麼不呢?一個字符串永遠不會等於True或False,因爲True或False都不是字符串。至少它不會引發異常! –

0

一個字符串aif a相當於if len(a)!=0