Python 3布尔类型的普通问题

时间:2018-03-22 04:38:22

标签: python python-3.x boolean operator-precedence

我已经在Python 3中输入了一些闲置的代码,并且不了解输出。有人可以解释,为什么会发生这种情况:

  

1> 0 ==真

False
  

1> (0 ==真)

True
  

(1> 0)== True

True

您也可以将数字替换为bool,输出也是相同的。

3 个答案:

答案 0 :(得分:1)

因为在Python中comparisons can be chained arbitrarily。所以你的表达式等同于

(1 > 0) and (0 == True)

后一部分显然失败了。

你会惊讶地发现这在Python中是正确的,但在C中是假的:

5 > 4 > 3 > 2 > 1

答案 1 :(得分:0)

这些运算符都具有相同的优先级(From Docs

  

与C不同,Python中的所有比较操作都具有相同的优先级,低于任何算术,移位或按位操作的优先级。

答案 2 :(得分:0)

请查看chained comparison。这解释了查询,例如第一个表达 -

1 > 0 == True

可以打破为(1> 0)和(0 == True),这是True和False,将返回false。