Python';s in(_包含__)运算符返回一个值既不为真也不为假的布尔值
正如所料,空元组中不包含1Python';s in(_包含__)运算符返回一个值既不为真也不为假的布尔值,python,boolean,membership,comparison-operators,Python,Boolean,Membership,Comparison Operators,正如所料,空元组中不包含1 >>> 1 in () False 但是返回的False值不等于False >>> 1 in () == False False 从另一个角度看,中的运算符返回一个既不是True也不是False的bool: >>> type(1 in ()) <type 'bool'> >>> 1 in () == True, 1 in () == False (False, False) 或者
>>> 1 in ()
False
但是返回的False
值不等于False
>>> 1 in () == False
False
从另一个角度看,中的运算符返回一个既不是True也不是False的bool
:
>>> type(1 in ())
<type 'bool'>
>>> 1 in () == True, 1 in () == False
(False, False)
或者它的值存储在变量中
>>> value = 1 in ()
>>> value == False
True
在Python2和Python3中都可以观察到这种行为
你能解释一下发生了什么吗?你遇到了比较运算符链接<代码>1 in()==False
不表示(1 in())==False
相反,比较是链接的,表达式的真正含义是:
(1 in ()) and (() == False)
因为(1in())
已经为false,所以链式表达式的后半部分将被完全忽略(因为false和something\u other
返回false
而不管something\u other
的值是什么)
见:
比较可以任意链接,例如,xa is b is None
和1
这样的表达式,但不能在in
、not in
、is
、is not
之间相互混合,或者使用(in)相等运算符。
(1 in ()) and (() == False)
>>> (1 in ()) is False
True
3 > 1 == True
3 > 2 == True