为什么`a <b <c`在Python中有效?

agt*_*ver 2 python boolean-expression

标题说明了一切.例如,1<2<3返回True2<3<1返回False.

它的功能很棒,但我无法解释它为什么有效......我在文档中找不到任何相关内容.它总是:expression boolean_operator expression,而不是两个布尔运算符).另外:a<b返回一个布尔值,boolean boolean_operator expression并不解释行为.

我确信这个解释几乎是明显的,但我似乎很想念它.

mgi*_*son 9

这称为操作员链接.文档可在以下位置获得

https://docs.python.org/2/reference/expressions.html#not-in

比较可以任意链接,例如,x <y <= z等于x <y和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,除了每个表达在评价最多一次.