为什么在Python中,“ ==”要先于“ in”?

时间:2018-11-21 13:18:04

标签: python

以下代码输出False,根据Python操作顺序,它应该输出True(顺序应为-> ==,而不是相反)。为什么==会先出现?

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

输出

False

2 个答案:

答案 0 :(得分:11)

现有答案给出了有益的建议,您不应将布尔值与function cors() { header("HTTP/1.1 " . "200" . " " . "OK"); header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); header('Access-Control-Allow-Headers: Accept, Content-Type, Access-Control-Allow-Credentials, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods, X-Requested-With, X-API-KEY, X-Auth-Token, X-Requested-With, Authorization, Content-Range, Content-Disposition, Origin, Access-Control-Request-Method'); header('Access-Control-Max-Age: 86400'); header('Access-Control-Allow-Origin: '."http://localhost"); header('Access-Control-Allow-Credentials: true'); } //----------------------------------- if($_SERVER['REQUEST_METHOD']=="OPTIONS") { cors(); } else { ... } 进行比较,因为这是多余的。但是,没有一个答案实际上回答了根本问题:“为什么True评估为"3" in y == True?”。

juanpa.arrivillaga在评论中回答了这个问题:

  

此外,这也是运算符链接的一个实例,因为False==都算作比较运算符。因此,它被评估为in

在Python中,比较运算符可以被链接。例如,如果要检查('3' in y) and (y == True)abc的增加,则可以写d而不是{{1} }。同样,您可以检查它们是否都与{{​​1}}相等。

在Python文档here中描述了链式比较:

  

比较可以任意链接,例如,a < b < c < d等效于a < b and b < c and c < d,除了a == b == c == d仅被评估一次(但在两种情况下,x < y <= z都不被评估)全部x < y and y <= z被发现为假)。

答案 1 :(得分:-2)

在python中,比较,成员资格测试和身份测试的优先级都相同。 用于检查成员资格的关键字in返回bool,不需要与第二个bool进行额外比较。但是,您可以像这样对表达式进行分组...

y = "33"

("3" in y) == True