【发布时间】:2018-02-09 23:26:39
【问题描述】:
我刚刚在 Python 3 中偶然发现了以下行。
1 in range(2) == True
我期待这是 True,因为 1 in range(2) 是 True 而 True == True 是 True。
但这会输出False。所以和(1 in range(2)) == True的意思不一样。此外,它与引发错误的1 in (range(2) == True) 的含义不同。
尽管有多年的 Python 经验,但我还是措手不及。怎么回事?
【问题讨论】:
-
@chrisz,它使用的是
in,所以如果是这种情况,那就是语法错误(argument of type 'bool' is not iterable) -
哎呀,你是对的,我看错了。
-
今天之前删除的关于 SO 的问题。顺便说一句,由于这种行为,他们的代码是错误的,但他们在我指出之前删除了问题。
-
表达式相当于
(1 in range(2)) and (range(2) == True),其中第二部分为假,使整个条件为假。 -
@Olivier 是的,
in是一个比较运算符有点违反直觉。不过,我必须检查实际文档以确认这种怀疑。
标签: python python-3.x