python有一个颇有意思的语法糖你能够直接写1<2<3。html
这复合咱们一般意义上的数学不等式,但对学过C等语言实际上是有疑惑的。python
咱们知道不等式返回的实际上是个Bool值,在C中是1,0所以C中下面状况是正确的express
0<0<1code
所以咱们看下面这个状况htm
True == True == False #False False == False == True #False
从一般意义来讲==号从右往左结合,不管如何值都应该是True,可是结果确是False文档
这就是源于python的一个语法糖,对于运算优先级的规定。get
全部比较类型的运算符拥有一样的优先级,会从左至右连接起来共同做为一个比较段( all have the same precedence and have a left-to-right chaining feature as described in the Comparisons section)。数学
in, not in, is, is not, <, <=, >, >=, !=, ==
好比一个典型的True == True == False
它实质是以下的逻辑关系it
(True == True) and (True == False)
io
文档中说明a op1 b op2 c ... y opN z实质至关于a op1 b and b op2 c and ... y opN z
因此虽然-2<-1<0符合咱们正常数学上的逻辑,但这只是一个特例,正如评论中指出的1<5>3依然返回True
正是由于它符合1<5 and 5>3