请考虑以下声明:
> False == False in [False]
True
Run Code Online (Sandbox Code Playgroud)
然而:
> (False == False) in [False]
False
> False == (False in [False])
False
Run Code Online (Sandbox Code Playgroud)
不可思议.是什么原因和解释?
dis.dis救援和我的一些解释.
无论如何,它看起来像这样.考虑三个表达式X, Y, Z和两个运算符O1, O2.然后
X O1 Y O2 Z
Run Code Online (Sandbox Code Playgroud)
相当于
(X O1 Y) and (Y O2 Z)
Run Code Online (Sandbox Code Playgroud)
可以看出
a < b < c
Run Code Online (Sandbox Code Playgroud)
例.我发现这种行为非常违反直觉.
和文档:
比较可以任意链接,例如,x <y <= z等于x <y和y <= z,除了y仅被评估一次(但在两种情况下,当x <y被发现时,根本不评估z是假的).
注意,这in是一个比较运算符.