Reputation: 293
What is the explanation for this behavior in Python?
a = 10
b = 20
a and b # 20
b and a # 10
a and b
evaluates to 20, while b and a
evaluates to 10. Are positive ints equivalent to True? Why does it evaluate to the second value? Because it is second?
Upvotes: 10
Views: 330
Reputation: 321
In python everything that is not None, 0, False, "", [], (), {} is True
a and b is readed as True and True in this case the same for b and a
and yes in this case it takes the first value
edit: incomplete as in the comments
Upvotes: 0
Reputation: 612804
The documentation explains this quite well:
The expression
x and y
first evaluatesx
; ifx
is false, its value is returned; otherwise,y
is evaluated and the resulting value is returned.
And similarly for or
which will probably be the next question on your lips.
The expression
x or y
first evaluatesx
; ifx
is true, its value is returned; otherwise,y
is evaluated and the resulting value is returned.
Upvotes: 15