Anders Wang


我所认识的每个人都是榜样,都有值得我去尊敬和学习的地方。


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。

最近的文章

Python中的迭代器与可迭代

很多人在听到迭代器与可迭代这两个名词时往往会搞不清楚,甚至认为他们是一样的,但是实际上他们是不同的概念。 我们先来直观的区分这两者有什么不同。 可迭代 (iterable):如果一个对象具备有__it…

Python, 技术博文详细阅读
更早的文章

循环体与else语句

大家一定非常熟悉else关键字语句,else通常是用来配合if语句使用的,但是在Python的else语句并不只能用在if语句之后,还可以用在循环语句甚至try异常处理语句中,这虽然不是什么秘密,但是…

Python, 技术博文详细阅读
comments powered by Disqus