Python的“ in”和“ ==“混乱

时间:2018-11-21 18:13:41

标签: python

print('a' in 'aa')
print('a' in 'aa' == True)
print(('a' in 'aa') == True)
print('a' in ('aa' == True))

输出为

True
False
True
Traceback (most recent call last):
  File "main.py", line 6, in <module>
    print('a' in ('aa' == True))
TypeError: argument of type 'bool' is not iterable

如果第2行既不是第3行也不是第4行,那是什么?它怎么会变成假?

2 个答案:

答案 0 :(得分:7)

根据Expressions

print('a' in 'aa' == True)

评估为

'a' in 'aa' and 'aa' == True

False

请参见

print("a" in "aa" and "aa" == True)

==> False

其余的内容微不足道-有助于牢记operator precedence来解决它们。


类似的:

具有不同的语句。我标记为欺骗,但用户界面不正确-我回答得越来越少,以解释为什么您的完全打印了它的内容。

答案 1 :(得分:1)

案例1:很简单,答案是True

print('a' in 'aa')

情况2:此操作的值为'a' in 'aa' and 'aa' == True,因此显然它将返回false。

print('a' in 'aa' == True)

案例3:现在,由于()包含('a' in 'aa'),并且()的优先级最高,因此首先将'a' in 'aa'评估为True,然后然后True == True

print(('a' in 'aa') == True)

情况4:与上述情况相同,因为优先级为(),其优先级为'aa' == True,在尝试将in应用于不可迭代的bool时,将导致错误值。

print('a' in ('aa' == True))