Python 布林型別 bool 使用說明
Python 布林型別
Python 的布林型別bool
繼承自數值型別int
,主要用於表示真(True
)和假(False
)兩種狀態,因此,從用途上看,布林型別和數值型別有很大區別。
Python 中的 True,False 等價於 1,0
既然bool
和int
型別存在繼承關系,那麽True
等價1
,False
等價0
的設計就是可以理解的。
True == 1
True
0 == False
True
1 + True
2
不建議在 Python 中直接使用布林值參與算術運算
通過上面的範例,我們看到運算式1+True
可以得到預期結果2
,但官方建議使用int
建構子明確的轉換布林值,原運算式最好書寫為1+int(True)
。是的,這是一種更為穩妥的方法,以防止意外的發生。
數值型別
要想了解 Python 數值型別,你可以檢視Python 數值型別 int,float,complex 使用說明一節。
使用 bool 建構子建立 Python 布林值
除了直接書寫常值True
和False
,你還可以使用bool
型別的建構子,建立一個 Python 布林值。
bool([x], /)
- x 參數
x
參數表示用於建立布林值的物件,如果未指定則布林值為False
。
bool()
False
bool(1.23)
True
bool('')
False
將 Python 物件轉換為布林值
一個 Python 物件可以被隱含的轉換為布林值,這會發生在使用bool
建構子,或物件作為if
和while
陳述式的判斷依據時。
隱含轉換工作由物件的__bool__
方法完成,該方法傳回True
或False
,對應了隱含轉換的結果。如果__bool__
方法不存在,那麽將根據__len__
方法的傳回值決定轉換結果,__len__
傳回0
對應False
,傳回其他值對應True
。如果__len__
方法也不存在,那麽物件將轉換為True
。
在 Python 中,None
,等價於0
的數值,長度為0
的序列或集合物件,都將被視為False
。比如,0+0j
,()
,{}
。
Python 物件的 __bool__ 和 __len__ 方法
Python 物件的__bool__
方法,傳回物件對應的布林值。Python 物件的__len__
方法,傳回物件的長度資訊。
Python 字串 'True' 和 'False' 都將被轉換為布林值 True
字串是一種序列型別,__len__
方法決定了他將轉換為哪種布林值。由於'True'
和'False'
的長度都大於0
,因此他們都將轉換為True
。
bool('False')
True
bool(())
False