操作顺序不正确?

时间:2016-10-21 13:43:09

标签: python python-3.x python-3.5

我使用的是Python 3.5.2 shell。我很困惑为什么这样可行呢?

5 > 5**2
False
5 > 5**2 == False
False
(5 > 5**2) == False
True

操作的顺序定义**在>之前执行。这是在==之前它应该工作。

2 个答案:

答案 0 :(得分:11)

有趣的问题!这种行为的原因是Python中的所有比较运算符都具有相同的优先级, can be chained

所以你的第二次比较相当于

5 > 25 and 25 == False

当然评估为False。 但我同意在这种情况下,它不是很直观。

答案 1 :(得分:0)

5.15。运算符优先级

下表总结了Python中的运算符优先级,从最低优先级(最小绑定)到最高优先级(大多数绑定)。同一个框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二进制的。同一个框组中的操作员从左到右(除了比较,包括测试,它们都具有相同的优先级和从左到右的链 - 参见比较 - 和取幂,从右到左分组 )。

5 Expressions - Python

相关问题