以下代码输出False,根据Python操作顺序,它应该输出True(顺序应为-> ==,而不是相反)。为什么==会先出现?
y = "33"
"3" in y == True
输出
False
答案 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)
,a
,b
和c
的增加,则可以写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