它在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
?
答案 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