这是否符合我的想法?

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


这排除了“最左边优先”的假设:

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

最佳答案

这在Expressions章节中有详细记录:


  比较可以任意链接,例如x < y <= z是等效的
  到x < yy <= z,除了y仅被评估一次(但是在两个
  如果发现z为假,则完全不评估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并不意味着在
  和c,因此x < y > z是完全合法的(尽管可能不是
  漂亮)。

09-19 23:09