python docs中的哪个地方允许`in`运算符被链接?

时间:2016-07-10 21:39:42

标签: python operators comparison-operators

我最近发现以下内容会返回True

'a' in 'ab' in 'abc'

我知道python比较链接,例如a < b < c,但我无法在文档中看到有关这是合法的内容。

这是CPython实现中的偶然功能,还是指定了这种行为?

1 个答案:

答案 0 :(得分:8)

这是完全指定的行为,而不是偶然的功能。运算符链接在Comparison operators section

中定义
  

比较可以任意链接,例如,x < y <= z等同于x < y and y <= z,但y仅评估一次(但在两种情况下z都未评估所有x < y被发现为假的时候。

in是比较运算符之一;来自同一部分:

comp_operator ::=  "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="
                   | "is" ["not"] | ["not"] "in"

对于可能没有多大意义的组合,没有例外。

因此,您用作示例的特定表达式将以'a' in 'ab' and 'ab' in 'abc'执行,'ab'只能执行(加载)一次文字。