果然,数字1并不包含在空元组中。
>>> 1 in ()
False
但是返回的False
值并不等于False
>>> 1 in () == False
False
换个角度看,in
操作符返回一个既非 True
也非 False
的 bool
类型值:
>>> 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中都有观察到。
你能解释一下发生了什么吗?
a is b is None
和1 < x < 10
这样的表达式,但不能混合使用in
、not in
、is
、is not
以及(不)等运算符。 - Casey Kuball