所以我正在寻找问题并遇到了这个最近的问题
它的答案非常简单,但我注意到的一件事是它实际上确实返回了完全匹配的SPAM
所以这段代码
text = 'buy now'
print(text == 'buy now' in text) # True
返回True
,我不明白为什么
我试图通过在不同的地方放置括号来弄清楚,然后
text = 'buy now'
print(text == ('buy now' in text)) # False
返回False
和
text = 'buy now'
print((text == 'buy now') in text) # TypeError
提高TypeError: 'in <string>' requires string as left operand, not bool
我的问题是这里发生了什么,为什么会这样?
附言
我在 Ubuntu 20.04 上运行 Python 3.8.10
==
和in
都被视为比较运算符,因此表达式text == 'buy now' in text
受比较链接的影响,使其等效
text == 'buy now' and 'buy now' in text
两者都是and
True
的操作数,因此结果True
。
添加括号时,您要么检查是text == True
(False
)还是True in text
(这是一个TypeError
;str.__contains__
不接受布尔参数)。