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