为什么'=='在Python之前'in'出现?

rob*_*rob 7 python

以下代码输出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

  • 这并没有回答“为什么 y == True”中的“3”计算结果为“False”的问题? (4认同)