我不理解python True和False或True中的运算符优先级

时间:2016-03-23 08:50:00

标签: python python-2.7 boolean operator-precedence

它在python 2.7文档中说or的优先级低于and。但是当我输入闲置时:

>>> True and True or False
True
>>> True and False or True
True
>>> True and False
False

为什么这个True and False or True表达式的结果是True

4 个答案:

答案 0 :(得分:2)

更高的优先级意味着在优先级较低的运算符之前评估运算符,例如在算术中,乘法应该在加法之前进行求值,因此1 + 2 * 3将导致7而不是{{ 1}}。

在您的用例中,首先评估9,并提供True and False。然后使用False运算符(即or)评估此结果,结果为False or True

答案 1 :(得分:1)

实际上,运算符优先级与此结果无关;你把括号放在哪里都是一样的,因为NaN如果它的任何一个参数为真,总是返回True。所以:

or

答案 2 :(得分:1)

您的声明要求执行以下操作

第一个python计算左边的表达式;

评估1:真和假(因为这会评估为假python,然后查看或表达式)

评估2:真或假

然后评估为真

您可能还想查看布尔逻辑和真值表,以帮助理解其工作原理。

答案 3 :(得分:0)

最高优先级表示放置括号的位置

((True and True) or False)  # True
((True and False) or True)  # True
(True and False)            # False