这是完全指定的行为,不是偶然的功能。运算符链接在“ 比较运算符” 部分中定义:
可以任意链接比较,例如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'
文字仅执行(加载)一次。