`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).
假设我有下面这行代码:
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).