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

14 浏览
0 Comments

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

下面的代码输出False,根据Python运算符的优先级应该输出True(应该先进行in运算,再进行==运算)。为什么==在in之前执行?\n

y = "33"
"3" in y == True

\n输出结果\n

False

0
0 Comments

在Python中,比较运算、成员测试和身份测试都具有相同的优先级。关键字in用于检查成员资格,返回一个bool值,不需要与第二个bool值进行额外比较。然而,你可以将表达式分组如下...

y = "33"

("3" in y) == True

这并没有回答问题:“为什么"3" in y == True的结果是False?”

0
0 Comments

为什么在Python中,'=='在'in'之前?

对于这个问题,之前的回答给出了有用的建议,即不要将布尔值与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,只是当发现x < y为False时,y只被计算一次(但在两种情况下,当x < y为false时,z都不会被计算)。

0