[英]Python Operators: Math Precedence Comparison operators vs equality operators
print 1>0 == (-1)<0 # => False
print (1>0) == ((-1)<0) # => True
第一行打印 False。 第二行打印 True
问题是如果按照顺序比较运算符高于相等运算符。
两行都不应该打印 True 吗? (或者至少是同样的事情..)
https://www.codecademy.com/en/forum_questions/512cd091ffeb9e603b005713
相等和大于和小于运算符在 Python 中具有相同的优先级。 但是您会看到一些奇怪的东西,因为如何评估连续具有多个比较运算符的表达式。 Python 不是使用其优先规则比较先前计算的结果,而是将它们与and
链接在一起(重复中间子表达式)。
表达式1 > 0 == -1 < 0
等价于(1 > 0) and (0 == -1) and (-1 < 0)
(除了每个重复的子表达式,比如-1
只被评估一次,如果它是具有副作用的函数调用而不是整数文字,这可能很重要)。 由于中间的子表达式是False
,所以整个事情都是False
。
在第二个版本中,括号阻止了比较链接的发生,所以它只是独立地评估不等式,然后比较True == True
是True
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.