>>> a = "first"
>>> b = "second"
>>> 1 and a or b
'first'
>>> 0 and a or b
'second'
在 and or运算中 空字符串 ‘’,数字0,空列表[],空字典{},空(),None,在逻辑运算中都被当作假来处理,例如:
>>> a=0
>>>b=123
>>> 1 and a or b
123
>>>0 and a or b
123
输出结果都为123
避免这个陷阱的方法为:
>>>(1 and [a] or [b])[0]
0
说明:先把a和b都转为list,然后取第一个元素,由于 [a] 是一个非空列表,所以它决不会为假。即使 a 是 0 或者 '' 或者其它假值,列表 [a] 也为真,因为它有一个元素。