正如预期的那样,空元组不包含1
>>> 1 in ()
False
Run Code Online (Sandbox Code Playgroud)
但False返回的值不等于False
>>> 1 in () == False
False
Run Code Online (Sandbox Code Playgroud)
从另一个角度看,in操作员返回bool既不是也不True是False:
>>> type(1 in ())
<type 'bool'>
>>> 1 in () == True, 1 in () == False
(False, False)
Run Code Online (Sandbox Code Playgroud)
但是,如果原始表达式带括号,则恢复正常行为
>>> (1 in ()) == False
True
Run Code Online (Sandbox Code Playgroud)
或其值存储在变量中
>>> value = 1 in ()
>>> value == False
True
Run Code Online (Sandbox Code Playgroud)
在Python 2和Python 3中都观察到了这种行为.
你能解释一下发生了什么吗?