我最近发现以下结果True:
True
'a' in 'ab' in 'abc'
我知道python比较链,例如a < b < c,但是我在文档中看不到任何合法的链接。
a < b < c
这是CPython实现中的偶然功能,还是指定了此行为?
这是完全指定的行为,不是偶然的功能。运算符链接在“ 比较运算符” 部分中定义:
可以任意链接比较,例如x < y <= z与等效x < y and y <= z,不同之处在于y比较仅被评估一次(但在两种情况下z都x < y被发现为假,则根本不评估)。
x < y <= z
x < y and y <= z
y
z
x < y
in是比较运算符之一;从同一部分:
in
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "<>" | "!=" | "is" ["not"] | ["not"] "in"
对于可能没有多大意义的组合也没有例外。
因此,您作为示例使用的特定表达式将执行为'a' in 'ab' and 'ab' in 'abc',而 'ab'文字仅执行(加载)一次。
'a' in 'ab' and 'ab' in 'abc'
'ab'