相关疑难解决方法(0)

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
查看次数

间隔比较如何工作?

不知何故,这工作:

def in_range(min, test, max):
    return min <= test <= max

print in_range(0, 5, 10)  # True
print in_range(0, 15, 10)  # False
Run Code Online (Sandbox Code Playgroud)

但是,我不能完全弄清楚这里的操作顺序.我们来测试一下这个False案子:

print 0 <= 15 <= 10  # False
print (0 <= 15) <= 10  # True
print 0 <= (15 <= 10)  # True
Run Code Online (Sandbox Code Playgroud)

显然,这并不是解决简单的操作顺序问题.区间比较是一个特殊的算子,还是其他的东西?

python syntax comparison

22
推荐指数
2
解决办法
8643
查看次数