轉(zhuǎn)載須注明出處:簡書@Orca_J35 | GitHub@orca-j35,所有筆記均托管于 python_notes 倉庫
本筆記涵蓋了 Boolean Values 中的全部內(nèi)容,并進(jìn)行了擴展
相關(guān)筆記:
- 『真值測試.md』
- 『bool.md』
- 『3.2. 標(biāo)準(zhǔn)類型層次.md』
布爾值包含兩個常量對象 False 和 True,用于表示真值。
bool 類是 int 類的子類(詳見 Numeric Types — int, float, complex),但不能為 bool 類創(chuàng)建子類。
issubclass(bool,int) #> True
因為 bool 是 int 的子類,所以 bool 同樣支持 int 類型支持的操作,詳見筆記『數(shù)值類型(int,float,complex).md』和『numbers - Numeric abstract base classes.md』
在數(shù)值上下文中(e.g., 被用作算數(shù)運算符的操作數(shù)時),False 和 True 的行為與整數(shù) 0 和 1 類似:
False + True + True #> 2
如果將 bool 值轉(zhuǎn)換為字符串,會得到 "False" 或 "True" ,而非 '0' 或 '1'。
str(True),repr(False) #> ('True', 'False')
內(nèi)置函數(shù) bool() 用于獲取對象的布爾值。
布爾意義
Python 中的所有對象均具備布爾意義。
默認(rèn)情況下,對象的真值為 True,除非存在以下兩種情況:
- 對象中定義了
__bool__()方法,并且該方法返回False - 對象中定義了
__len__()方法,并且該方法返回0
如果同時定義了上述兩種方法, __bool__() 的優(yōu)先級高于 __len__() 。如果類定義中不包含 __len__() 和 __bool__(),則該類的所有實例均為真。
下面是真值為 false 的內(nèi)置對象:
- 常量
None和False被定義為 false - 任何等于 0 的數(shù)值類型:
0,0.0,0j,Decimal(0),Fraction(0, 1) - 空序列(sequences)和集合(collections):
'',(),[],{},set(),range(0)