and的优先级高于
or。
False and 2 or 3
被评估为
((False and 2) or 3)
由于第一部分
(False and2)是
False,Python必须评估第二部分,以查看整个条件是否仍然可以
True。由于可以
3求值,
True因此可以返回此操作数。
类似,
1 or False and 2 or 2 and 0 or 0其评估为
(1 or ((False and 2) or ((2 and 0) or 0)))
由于
1计算为
True,所以
True无论其他操作数具有哪个值,整个条件都将为。Python可以再次停止计算,返回确定最终值的操作数。
在确定最终结果后立即停止称为 短路评估
,可以描述如下:
只要确定了表达式的最终结果,就将停止求值,在Python中,将返回确定最终值的操作数的值。也就是说,假设从左到右进行评估:
- 对于
and
运算符,计算结果为最左边的操作数False
(或最后一个) - 对于
or
运算符,计算结果为最左边的操作数True
(或最后一个)



