为什么布尔表达式"1 in (1, 2, 3) == True"是False?

13 浏览
0 Comments

为什么布尔表达式"1 in (1, 2, 3) == True"是False?

在Python中,为什么语句1 in (1, 2, 3) == True返回False?Python中的运算符优先级是否存在歧义?

0
0 Comments

问题的原因是布尔表达式"1 in (1, 2, 3) == True"返回的结果是False。根据Python文档中关于运算符优先级的说明,比较运算、成员测试和身份测试的优先级相同,并且具有从左到右的链接特性。比较运算部分给出了一个链接的示例,比如"x < y <= z"等同于"x < y and y <= z"。

因此,"1 in (1, 2, 3) == True"会被解释为"(1 in (1, 2, 3)) and ((1, 2, 3) == True)"。如果你通过添加括号来覆盖这种链接,就能得到预期的结果。

同时需要注意的是,与其通过与True或False的相等性来比较真值,你应该直接使用"if thing:"和"if not thing:"。

解决方法是通过添加括号来明确链式比较的顺序,如"(1 in (1, 2, 3)) == True"。此外,如果你明确想要与True进行比较,应该使用"stuff is True"而不是"stuff == True"。

0