Python中奇怪的'in'运算符行为

时间:2017-11-16 17:20:35

标签: python operator-keyword

就在今天,我开始讨论Python中in运算符的这种奇怪行为(使用Python 3.6.3更具体)。

>>> ':' in '4:2'
True
>>> ':' in '4:2' != True
True
>>> (':' in '4:2') != True
False
>>> ':' in ('4:2' != True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable

可以看出,':' in '4:2'True。一切正常在这里。但奇怪的行为出现在第二行:

>>> ':' in '4:2' != True
True

':' in '4:2'True!= True并生成... True?如果我们手工分组以确保优先顺序:

>>> (':' in '4:2') != True
False

False中的结果。 True != True符合预期False。那么,我们之前是如何得到True的?:

>>> ':' in ('4:2' != True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable

发生了什么事?

0 个答案:

没有答案