正如所料,空元组不包含 1
>>> 1 in ()
False
但False
返回的值不等于False
>>> 1 in () == False
False
换一种方式来看,in
运算符返回一个bool
既不是True
也不是False
:
>>> type(1 in ())
<type 'bool'>
>>> 1 in () == True, 1 in () == False
(False, False)
但是,如果原始表达式被括号括起来,则恢复正常行为
>>> (1 in ()) == False
True
或者它的值存储在一个变量中
>>> value = 1 in ()
>>> value == False
True
在 Python 2 和 Python 3 中都观察到了这种行为。
你能解释一下发生了什么吗?