与运算(and):只有两个布尔值都为
True 时,计算结果才为 True。
或运算(or):只要有一个布尔值为
True,计算结果就是 True。
非运算(not):把True变为False,或者把False变为True。
and 和 or 运算的一条重要法则:短路计算:
1. 在计算 a
and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
2. 在计算 a
or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
在执行布尔运算时是把运算符前运算符后都作为一个整体计算。
例:
a = ''
print 'hello,', a or 'world' # ==> hello world
b = ''
print 'hello,', b or 'Python' or a and 'a=T' # ==>hello Python
过程:
b or 'Python' or a and 'a=T' # b为假 返回值为: 'Python' or a and 'a=T'(短路计算)
'Python' or a and 'a=T' # Python 为真 在or语句中就不判断后面了 直接输出'Python'(短路计算)