注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。
如上一节所说,布尔值属于整数(int)的子类型。
布尔值是两个常量对象False和True。它们被用来表示逻辑上的真假(不过其他值也可被当作真值或假值)。
可以用bool()函数对任何对象进行布尔值检测。
布尔值False与True和整数0与1有某种对应关系。
int(False)
Out[1]: 0
int(True)
Out[2]: 1
bool(0)
Out[20]: False
bool(1)
Out[21]: True
布尔运算(逻辑运算)
“与”and,双目运算。
“或”or,双目运算。
“非”not,单目运算。
三者优先级比较:not > and > or。
而布尔运算的优先级又比非布尔的优先级要低。所以对not a == b而言,会先运算a == b,然后再运算not,即not a == b等价于not (a == b)。
如何判定各类型的对象对应的布尔值
整数、浮点数和复数类型——0是False,所有非0的数值都是True。
字符串类型——空字符串""是False,所有非空的字符串都是True。
所有序列类型(包括字符串)——空序列是False,所有非空的序列都是True。
除了空字符串""外,空序列还包括空元组()、空列表[]、空字典{}、空集合set()、空range(即range(0))。
空值None——None表示“无意义”或“不知道”,也是False。
bool([]) # 空列表的布尔值为False。
Out[3]: False
bool(['a']) # 非空列表的布尔值为True。
Out[4]: True
bool('') # 空字符串的布尔值为False。
Out[5]: False
bool('12') # 非空字符串的布尔值为True。
Out[6]: True
bool(0) # int数字0的布尔值为False。
Out[7]: False
bool(1) # 非零数字的布尔值为True。
Out[8]: True
bool(-32) # 非零数字的布尔值为True。
Out[9]: True
bool(()) # 空元组的布尔值为False
Out[10]: False
bool((0, )) # 非零元组的布尔值为True。
Out[15]: True
bool({}) # 空字典的布尔值为False。
Out[16]: False
bool(set()) # 空集合的布尔值为False。
Out[17]: False
bool(range(0)) # 空range的布尔值为False。
Out[18]: False
bool(None)
Out[22]: False
To be continued.