==和比较的逻辑是什么?

What is the logic of == and in comparison?

所以我在寻找问题并遇到了 最近的问题

它的答案非常简单,但我注意到的一件事是它确实 return SPAM 完全匹配

所以这段代码

text = 'buy now'

print(text == 'buy now' in text)  # True

returns True 我不明白为什么

我试图通过将括号放在不同的地方来弄清楚

text = 'buy now'

print(text == ('buy now' in text))  # False

returns False

text = 'buy now'

print((text == 'buy now') in text) # TypeError

加注TypeError: 'in <string>' requires string as left operand, not bool

我的问题是这里发生了什么,为什么会这样?

P.S.

我是 运行 Python 3.8.10 Ubuntu 20.04

==in 都被认为是比较运算符,因此表达式 text == 'buy now' in text 受比较链接影响,使其等同于

text == 'buy now' and 'buy now' in text

两者都是 and 的操作数是 True,因此是 True 结果。

添加括号时,您要么检查 text == True(即 False),要么检查 True in text(即 TypeErrorstr.__contains__ 不接受布尔参数)。