请在下面解释,我认为它应该打印为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
答案 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,而不是''
。