首页 > 解决方案 > 条件_a 或条件_b 和条件_c 是否总是等价于(条件_a 或条件_b)和条件_c?

问题描述

总是condition_a or condition_b and condition_c等价于(condition_a or condition_b) and condition_c?

我周围的一些人说他们的工作方式相同,但其他人不同意,因为在某些情况下会发生短路。例如,如果condition_a为 True,condition_a则评估为 True,第一个终止,但第二个不终止。

然后,我对它们进行了实验。

>>> (False or True) and True
True
>>> False or True and True
True

似乎它们的工作方式相同。如果短路工作,第二个应该是假的。我想无论如何,短路评估只能同时在两个条件之间起作用,所以这意味着它们是等效的,因为False or True首先评估然后评估False or True和 True 的结果。听起来正确吗?

标签: pythonpython-3.x

解决方案


不,and优先级高于or。例如,

>>> True or False and False
True
>>> (True or False) and False
False

https://docs.python.org/3/reference/expressions.html#operator-precedence的第 6.17 节 显示了运算符的优先级。


推荐阅读