python运算符优先级如何与双重比较一起使用?

时间:2017-03-15 21:27:25

标签: python operator-precedence comparison-operators

-3<-2<-1返回True

但我希望它被解释为

(-3<-2)<-1
True<-1
1<-1
False

这怎么可能?

3 个答案:

答案 0 :(得分:7)

这是chained comparison。它不是像(-3 < -2) < -1这样的左关联,也不像-3 < (-2 < -1)这样的右关联,而是被视为

(-3 < -2) and (-2 < -1)

除了-2最多评估一次。

答案 1 :(得分:3)

From the docs

  

与C不同,像a < b < c这样的表达式具有数学中常规的解释

     

比较可以任意链接,例如,x < y <= z是等效的   至x < y and y <= z,但y仅评估一次(但两者都有)   如果发现zx < y,则根本不评估案例false

因此

-3 < -2 < -1  

相当于

-3 < -2 and -2 < -1  # where -2 is evaluated only once

答案 2 :(得分:0)

documentation中声明它是语言的一部分