Python 运算符:数学优先级比较运算符与相等运算符

Pra*_*lka 3 python operator-precedence python-2.7

print 1>0 == (-1)<0           # => False
print (1>0) == ((-1)<0)       # => True
Run Code Online (Sandbox Code Playgroud)

第一行打印 False。第二行打印 True

问题是,根据顺序,比较运算符是否高于相等运算符。

这两行不都应该打印 True 吗?(或者至少是同样的事情..)

https://www.codecademy.com/en/forum_questions/512cd091ffeb9e603b005713

Blc*_*ght 6

在 Python 中,相等以及大于和小于运算符具有相同的优先级。但由于连续多个比较运算符的表达式的求值方式,您会看到一些奇怪的情况。Python 不是使用优先级规则来比较先前计算的结果,而是将它们链接在一起and重复中间的子表达式)。

该表达式1 > 0 == -1 < 0等效于(1 > 0) and (0 == -1) and (-1 < 0)(除了每个重复的子表达式,例如-1仅计算一次,如果它是具有副作用的函数调用而不是整数文字,则这可能很重要)。由于中间的子表达式是False,所以整个事情是False

在第二个版本中,括号阻止了比较链的发生,因此它只是独立地评估不等式,然后比较True == True哪个是True