有谁可以解释为什么前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?
答案 0 :(得分:1)
关于布尔运算的官方参考(Python 2.x和Python 3.x):
x or y
:如果x
为false,则为y
,否则为x
(这是一个短路运算符,所以它只评估第一个参数,如果第一个一个是False
)x and y
:如果x
为false,则为x
,否则为y
(这是一个短路运算符,所以它只评估第一个参数,如果第一个一个是True
)not x
:如果x
为false,则为True
,否则为False
(优先级低于非布尔运算符,因此not a == b
为解释为not (a == b)
,a == not b
是语法错误)