`in` 和 `==` 在 Python 中的优先级

Precedence of `in` and `==` in Python

假设我有下面这行代码:

print("valley" in "hillside" == False)

由于 in== 的优先级在 Python 中是等价的,我希望操作从左到右执行,输出 True .

然而,实际上,当我 运行 这行代码时,我得到 False.

我注意到在 "valley" in "hillside" 周围添加括号会导致 True 作为输出,但我似乎不明白为什么首先需要它...

in==都是比较运算符,所以解析器把

print("valley" in "hillside" == False)

相同
print("valley" in "hillside" and "hillside" == False)

有关详细信息,请参阅 Python 语言参考中有关 Comparisons 的部分,尤其是此注释:

Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).