一尘不染

它在python文档中的何处允许“ in”运算符被链接?

python

我最近发现以下结果True

'a' in 'ab' in 'abc'

我知道python比较链,例如a < b < c,但是我在文档中看不到任何合法的链接。

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


阅读 202

收藏
2021-01-20

共1个答案

一尘不染

这是完全指定的行为,不是偶然的功能。运算符链接在“ 比较运算符”
部分中
定义:

可以任意链接比较,例如x < y <= z与等效x < y and y <= z,不同之处在于y比较仅被评估一次(但在两种情况下zx < y被发现为假,则根本不评估)。

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

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

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

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

2021-01-20