繁体   English   中英

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

[英]Multiple comparison operators in single statement (chaining comparison operators)

这是否符合我的想法?

assert 1 < 2 < 3

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

它似乎有效,但可能是运气,就像最左边的解析为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

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

比较可以任意链接,例如, x < y <= z等价于x < y and y <= z ,除了y只计算一次(但在这两种情况下,当找到x < y时根本不计算z是假的)。

形式上,如果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是完全合法的(尽管可能不漂亮)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM