"word" in [] == False解析表达式的内容的顺序是什么?它似乎无视所有逻辑:
>>> "word" in [] == False
False
>>> ("word" in []) == False
True
>>> "word" in ([] == False)
TypeError
Run Code Online (Sandbox Code Playgroud)
Python如何实际解释这个表达式,为什么它会这样解释呢?
编辑:
最常见的情况似乎是
>>> any_value in any_list == any_symbol_or_value
False
Run Code Online (Sandbox Code Playgroud)
Joc*_*zel 10
但这实际上是一个棘手的例子:
比较可以任意链接,例如,x <y <= z等于x <y和y <= z,除了y仅被评估一次(但在两种情况下,当x <y被发现时,根本不评估z是假的).
所以"word" in [] == False真的
("word" in []) and ([] == False)
Run Code Online (Sandbox Code Playgroud)
两者[]实际上是同一个对象.
这对其他比较很有用,也就是说0 < a < 10,但这里真的很混乱!