==和比较的逻辑是什么?
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
(即 TypeError
;str.__contains__
不接受布尔参数)。
所以我在寻找问题并遇到了
它的答案非常简单,但我注意到的一件事是它确实 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
(即 TypeError
;str.__contains__
不接受布尔参数)。