就在今天,我开始讨论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
发生了什么事?