print 'a' or 'b'
print '' or 'b'
print '' or [] or {}
def sidefx():
print "in sidefx()"
return 1
'a' or sidefx()
#If any value is true, or returns that value immediately.
#In this case, 'a' is the first true value.
#or evaluates '', which is false, then 'b', which is true, and returns 'b'.
#If all values are false, or returns the last value. or evaluates '',
#which is false, then [], which is false, then {}, which is false, and returns {}.
#Note that or evaluates values only until it finds one that is true in a boolean
#context, and then it ignores the rest.
|