与运算
两个都为true时,计算结果才为true
True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False
或运算
只要有一个布尔值为 True,计算结果就是 True。
True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False
非运算
把True变为False,或者把False变为True:
not True # ==> False
not False # ==> True
在Python中,布尔类型还可以与其他数据类型(字符串,数字等)做 and、or和not运算,请看下面的代码:
a = True
print(a and 0 or 99) # ==> 99
True and 0计算结果是0
继续计算0 or 99计算结果是 99
因此,结果是99。
需要注意的是,not计算的优先级是高于and和or的。
True and not False # ==> True
短路计算
- 在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
- 在计算a or b时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。