奇怪的输出python

时间:2014-12-18 06:57:38

标签: python

请在下面解释,我认为它应该打印为True或False,因为这些是布尔表达式。为什么它打印2 1然后1 2

print 1 and 2
print 2 and 1
print 1 or 2
print 2 or 1

输出:

2
1
1
2

1 个答案:

答案 0 :(得分:5)

为什么你认为结果必须是布尔类型?

来自python wiki:

  

表达式x and y首先评估x;如果x为false,则返回;否则,评估y并返回结果

     

表达式 x或y 首先评估x;如果x为真,则返回;否则,评估y并返回结果

请注意,以及都不会限制它们返回False和True的值和类型,而是返回最后一个已计算的参数。这有时是有用的,例如,如果s是一个字符串,如果它是空的,则应该用默认值替换,表达式s or 'foo'产生所需的值。因为无论如何都不必创建一个值,所以它并不打算返回与其参数相同类型的值,例如,not 'foo'产生False,而不是''