Python 布林型別 bool 使用說明

閱讀 2:50·字數 852·發佈 
Youtube 頻道
訂閱 133

Python 布林型別

Python 的布林型別bool繼承自數值型別int,主要用於表示真(True)和假(False)兩種狀態,因此,從用途上看,布林型別和數值型別有很大區別。

Python 中的 True,False 等價於 1,0

既然boolint型別存在繼承關系,那麽True等價1False等價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 布林值

除了直接書寫常值TrueFalse,你還可以使用bool型別的建構子,建立一個 Python 布林值。

bool([x], /)

x 參數

x參數表示用於建立布林值的物件,如果未指定則布林值為False

bool()
False
bool(1.23)
True
bool('')
False

將 Python 物件轉換為布林值

一個 Python 物件可以被隱含的轉換為布林值,這會發生在使用bool建構子,或物件作為ifwhile陳述式的判斷依據時。

隱含轉換工作由物件的__bool__方法完成,該方法傳回TrueFalse,對應了隱含轉換的結果。如果__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