为什么`a <b <c` work =“”in =“”python?=“”

时间:2015-08-08 17:51:32

标签: python boolean-expression

=“”

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

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

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

3 个答案:

答案 0 :(得分:9)

这称为操作员链接。文档可在以下网址获得:

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

  

比较可以任意链接,例如,x <1。 y&lt; = z等于x&lt; y和y&lt; = z,除了y仅被评估一次(但在两种情况下,当x&lt; y被发现为假时,根本不评估z。)

而且,如果你真的喜欢正式的定义:

  

正式地,如果abc,...,yz是表达式,op1,{{ 1}},...,op2是比较运算符,然后opN等同于a op1 b op2 c ... y opN z,除了每个表达式最多只计算一次。

答案 1 :(得分:2)

您的多个运算符都具有相同的优先级,因此现在它将以串行方式完成它们。 1<2<3转到1<2即T,然后2<3为T. 2<3<1有两部分,2<3为T,但3<1为F所以整个表达式的计算结果为F.

答案 2 :(得分:1)

根据语言参考

,可以链接比较运算符

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