Skip to main content
 首页 » 编程设计

python之Python 解析器的复杂性

2025年05月04日11wayfarer

[] == False 中表达式"word"的内容按什么顺序解析?这似乎违背了所有逻辑:

>>> "word" in [] == False 
False 
>>> ("word" in []) == False 
True 
>>> "word" in ([] == False) 
TypeError 

Python 实际上是如何解释这个表达式的,为什么要这样解释?

编辑:

最一般的情况似乎是

>>> any_value in any_list == any_symbol_or_value 
False 

请您参考如下方法:

通常你可以用 this table. 找出运算符的优先级.

但这实际上是一个棘手的例子:

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).

See the notes on comparisons.

所以 "word" in [] == False真的是

("word" in []) and ([] == False) 

其中两个[]实际上是同一个对象。

这对其他比较很有用,即0 < a < 10 ,但这里真的很困惑!