带有整数的Python“和”运算符

时间:2012-02-15 18:22:36

标签: python boolean

Python中这种行为的解释是什么?

a = 10
b = 20
a and b # 20
b and a # 10

a and b的计算结果为20,而b and a的计算结果为10.正整数是否等于True?为什么评估第二个值?因为它是第二个?

3 个答案:

答案 0 :(得分:16)

documentation很好地解释了这一点:

  

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

同样适用于or,这可能是你嘴上的下一个问题。

  

表达式x or y首先评估x;如果x为真,则返回其值;否则,将评估y并返回结果值。

答案 1 :(得分:4)

请参阅docs

x and y     if x is false, then x, else y

非零整数被视为布尔值true,因此您可以完全获得文档中描述的行为:

>>> a = 10
>>> b = 20
>>> a and b
20
>>> b and a
10

答案 2 :(得分:0)

在python中,一切都不是None,0,False,“”,[],(),{}为True

在这种情况下,

a和b被加为True和True b和a

相同

并且在这种情况下,它采用第一个值

编辑:在评论中不完整