我的環境是:ubuntu 16.04 & python 2.7.12。關於Truthiness and the Booleans True and False
我閱讀文檔,並發現''
,()
,[]
,{}
和None
都被認爲是默認False
。
但我不明白這是怎麼回事在下面的例子:
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=''
>>> a==False
False
>>> a==True
False
>>> a=bool(a)
>>> a==False
True
>>>
>>>
>>>
>>> a="abcdefg"
>>> a==True
False
>>> a==False
False
>>> a=bool(a)
>>> a==True
True
>>>
我要得到正確的結果,看來我必須使用bool()
函數來進行。 這是正確的,爲什麼?
所有這一切意味着當需要布爾轉換時,例如'[]'會自動轉換爲'False' *。因爲'[]'和'False'是不同的對象,所以你不需要轉換爲布爾來評估'=='語句,'[] == False'返回'False'。但是'如果[]'會自動轉換爲'if False'。 – Julien
請注意,雖然布爾轉換後的值用於if和諸如此類,但對象仍將保留其(非布爾)值,即使在評估爲「True」或「False」後。例如,'[]和42'返回'[]',並且'False or None'返回'None'。這是因爲像這樣的布爾語句不會返回「True」或「False」,而是返回在邏輯表達式的值已知之前求值的最後一個表達式的值。 – BallpointBen