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

时间:2018-01-02 02:29:46

标签: python python-2.7 operator-precedence

print 1>0 == (-1)<0           # => False
print (1>0) == ((-1)<0)       # => True

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

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

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

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

1 个答案:

答案 0 :(得分:3)

在Python中,相等和大于和小于运算符具有相同的优先级。但是你会看到奇怪的东西,因为连续多个比较运算符的表达式是如何被评估的。 Python没有使用其优先级规则比较先前计算的结果,而是将它们与and链接在一起(重复中间子表达式)。

表达式1 > 0 == -1 < 0等同于(1 > 0) and (0 == -1) and (-1 < 0)(除了每个重复的子表达式,如-1只被评估一次,这可能很重要,如果它是一个带副作用的函数调用而不是整数文字)。由于中间子表达式为False,因此整个事件为False

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

相关问题