Python和/或"不是"返回布尔值

时间:2014-06-11 06:19:54

标签: python conditional

有谁可以解释为什么前2个语句不返回布尔值?

print 1 or 1 # prints 1, isn't this condition and should be returning True 
print 1 and 1 # prints 1, isn't this condition and should be returning True
print not 1 # prints False

所以and or不是比较运算符,它将返回True或False?

1 个答案:

答案 0 :(得分:1)

关于布尔运算的官方参考(Python 2.xPython 3.x):

  1. x or y:如果x为false,则为y,否则为x(这是一个短路运算符,所以它只评估第一个参数,如果第一个一个是False
  2. x and y:如果x为false,则为x,否则为y(这是一个短路运算符,所以它只评估第一个参数,如果第一个一个是True
  3. not x:如果x为false,则为True,否则为False(优先级低于非布尔运算符,因此not a == b为解释为not (a == b)a == not b是语法错误)