单个语句中的多个比较运算符(链接比较运算符)

Jér*_*ôme 9 python

这是否符合我的想法?

assert 1 < 2 < 3
Run Code Online (Sandbox Code Playgroud)

我在文档中找不到任何对此的引用,但我在高代表回答中看到了它。

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

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

>>> 1<2<3<4<5
True
>>> 1<2<7<4<5
False
>>> 1<2<3>2<5
True
Run Code Online (Sandbox Code Playgroud)

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

>>> 1<3<2
False
>>> (1<3)<2
True
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 13

这在文档的表达式章节中有详细记录:

比较可以任意链接,例如,x < y <= z等价于x < y and 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这并不意味着ac之间任何类型的比较,因此,例如,这x < y > z是完全合法的(尽管可能不漂亮)。

  • 谢谢。“链接”是我缺少的搜索关键字。我找不到任何与搜索“多个”相关的内容。 (2认同)