以下代码输出False,根据Python操作顺序,它应该输出True(顺序应该在 - > ==,而不是相反).为什么==之前会来?
y = "33"
"3" in y == True
Run Code Online (Sandbox Code Playgroud)
产量
False
Run Code Online (Sandbox Code Playgroud)
pkp*_*pnd 11
现有的答案提供了有用的建议,你不应该比较布尔值,True因为它是多余的.然而,没有一个答案实际上回答了根本问题:"为什么要"3" in y == True评估False?".
juanpa.arrivillaga在评论中回答了这个问题:
此外,这是一个实例操作链接,因为
==和in这两个算比较操作.所以这被评估为('3' in y) and (y == True)
在Python中,比较运算符可以链接.例如,如果你想检查a,b,c,和d正在增加,你可以写a < b < c < d,而不是a < b and b < c and c < d.同样,您可以检查它们是否完全相同a == b == c == d.
链比较Python的文档中描述了这里:
比较可以任意链接,例如,
x < y <= z等同于x < y and y <= z,除了y仅评估一次(但在两种情况下z都没有被评估,当x < y发现是假的时).
小智 -2
在 python 中,比较、成员资格测试和身份测试都具有相同的优先级。检查成员资格的关键字in返回 a bool,无需与第二个进行额外比较bool。但是,您可以像这样对表达式进行分组......
y = "33"
("3" in y) == True