python的短逻辑
python中的与(and)和或(or)都是短路的与或,短路指的是当通过第一个值能判断出结果时,就不再去查看第二个值了。
Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:
与(and)运算:对于与运算,由于要求两个都为True结果才为True,所以如果与运算的第一个值是False,这时无论第二个值是什么,最终结果都会是False。因此与运算的第一个值如果是False,则第二个值就不会再执行查看了。
print(True and True)
print(True and False)
print(False and True)
print(False and False)
# 输出如下:
# True
# False
# False
# False
或(or)运算:只要有一个布尔值为 True,计算结果就是 True。或运算,要求有一个True就会返回True,所以只要或运算的第一个值是True,就不会再查看第二个值了。总结起来就是与运算是找False的,找到False了就不会再看第二个值了。或运算时找True的,找到True了就不会再看第二个值了。
print(True or True)
print(True or False)
print(False or True)
print(False or False)
# 输出如下:
# True
# True
# True
# False
在Python中,布尔类型还可以与其他数据类型做and、or和not运算,请看下面的代码:
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=T。