单个语句中的多个比较运算符

时间:2017-04-28 10:16:42

标签: python

这是否符合我的想法?

assert 1 < 2 < 3

我无法在the docs中找到对此的任何引用,但我在高代表answer中看到了它。

它似乎有用,但它可能是运气,就像最左边的解析为True,然后True用于另一个。

我做了一些测试,它总是按预期工作,但我想找一个明确表明它是有意的来源(文档)。

>>> 1<2<3<4<5
True
>>> 1<2<7<4<5
False
>>> 1<2<3>2<5
True

这排除了最左边的第一个&#34;假设:

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

1 个答案:

答案 0 :(得分:3)

Expressions章节详细记录了这一点:

  

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

     

正式,如果 a b c ,..., y z 是表达式, op1 op2 ,..., opN   是比较运算符,然后a op1 b op2 c ... y opN z是等价的   到a op1 b and b op2 c and ... y opN z,除了每个表达式都是   最多评估一次。

     

请注意,a op1 b op2 c并不意味着 a 之间的任何比较   和 c ,因此,例如x < y > z是完全合法的(尽管可能不是   相当)。