操作顺序不正确?
Order of operations Incorrect?
我正在使用 Python 3.5.2 shell。我很困惑为什么会这样?
5 > 5**2
False
5 > 5**2 == False
False
(5 > 5**2) == False
True
操作的顺序定义了 ** 在 > 之前执行,在 == 之前执行,所以它应该可以工作。
有趣的问题!这种行为的原因是 Python 中的所有比较运算符都具有相同的优先级并且 can be chained.
所以你的第二个比较等同于
5 > 25 and 25 == False
当然计算结果为 False
。
但我同意,在这种情况下,它不是很直观。
5.15。运算符优先级
以下table总结了Python中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。同一框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二进制的。同一框内的运算符从左到右分组(除了比较,包括测试,它们都具有相同的优先级和从左到右的链——参见比较部分——和求幂,从右到左分组).
我正在使用 Python 3.5.2 shell。我很困惑为什么会这样?
5 > 5**2
False
5 > 5**2 == False
False
(5 > 5**2) == False
True
操作的顺序定义了 ** 在 > 之前执行,在 == 之前执行,所以它应该可以工作。
有趣的问题!这种行为的原因是 Python 中的所有比较运算符都具有相同的优先级并且 can be chained.
所以你的第二个比较等同于
5 > 25 and 25 == False
当然计算结果为 False
。
但我同意,在这种情况下,它不是很直观。
5.15。运算符优先级
以下table总结了Python中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。同一框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二进制的。同一框内的运算符从左到右分组(除了比较,包括测试,它们都具有相同的优先级和从左到右的链——参见比较部分——和求幂,从右到左分组).