我最近发现以下内容会返回True
:
'a' in 'ab' in 'abc'
我知道python比较链接,例如a < b < c
,但我无法在文档中看到有关这是合法的内容。
这是CPython实现中的偶然功能,还是指定了这种行为?
答案 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'
只能执行(加载)一次文字。