操作顺序不正确?

Ste*_*wes 9 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
Run Code Online (Sandbox Code Playgroud)

操作的顺序定义**在> =之前执行,因此它应该起作用.

dor*_*ian 11

有趣的问题!这种行为的原因是Python中的所有比较运算符具有相同的优先级并且可以链接.

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

5 > 25 and 25 == False

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