这是否符合我的想法?
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 < y
和y <= 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
是完全合法的(尽管可能不是
漂亮)。