小编use*_*478的帖子

Python的(__contains __)运算符返回一个bool,其值既不是True也不是False

正如预期的那样,空元组不包含1

>>> 1 in ()
False
Run Code Online (Sandbox Code Playgroud)

False返回的值不等于False

>>> 1 in () == False
False
Run Code Online (Sandbox Code Playgroud)

从另一个角度看,in操作员返回bool既不是也不TrueFalse:

>>> 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中都观察到了这种行为.

你能解释一下发生了什么吗?

python membership boolean comparison-operators

32
推荐指数
1
解决办法
953
查看次数