一个很小的细节,可是却可以在你不注意的时候给你带来炒鸡大的麻烦!放在这里时刻提醒自己这个小坑:
例:
a = True
print(a and 'a=T' or 'a=F') //最后结果:a=T
计算结果不是布尔类型,而是字符串 ‘a=T’,这是为什么呢?
因为Python把0
、空字符串''
和None
看成False
,其他数值
和非空字符串
都看成True
所以:
True and 'a=T' 计算结果是 'a=T'
继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'
在计算
a and b
时 ,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。在计算
a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。