你知道Python学习中and-or的使用技巧吗?

今天马哥教育要跟大家分享的文章是Python学习中and-or的使用技巧,and 和 or 是Python的两个逻辑运算符,可以使用and 和or来进行多个条件内容的判断,Python入门新手和正在Python学习的小伙伴快来看一看吧,希望能够对大家有所帮助 !

看下面这段代码:

a = "heaven"

b = "hell"

c = True and a or b

print c

d = False and a or b

print d

输出:

heaven

hell

结果很奇怪是不是?

表达式从左往右运算,1和"heaven"做and的结果是"heaven",再与"hell"做or的结果是"heaven";0和"heaven"做and的结果是0,再与"hell"做or的结果是"hell"。

抛开绕人的and和or的逻辑,你只需记住,在一个bool and a or b语句中,当bool条件为真时,结果是a;当bool条件为假时,结果是b。

有学过c/c++的同学应该会发现,这和bool?a:b表达式很像。

有了它,原本需要一个if-else语句表述的逻辑:

if a > 0:

print "big"

else:

print "small"

就可以直接写成:

print (a > 0) and "big" or "small"

然而不幸的是,如果直接这么用,有一天你会踩到坑的。和c语言中的?:表达式不同,这里的and、or语句是利用了Python中的逻辑运算实现的。当a本身是个假值(如0,"")时,结果就不会像你期望的那样。

比如:

a = ""

b = "hell"

c = True and a or b

print c

得到的结果不是""而是"hell"。因为""和"hell"做and的结果是"hell"。

所以,and-or真正的技巧在于,确保a的值不会为假。最常用的方式是使 a 成为 [a] 、 b 成为 [b],然后使用返回值列表的第一个元素:

a = ""

b = "hell"

c = (True and [a] or [b])[0]

print c

由于[a]是一个非空列表,所以它决不会为假。即使a是0或者''或者其它假值,列表[a]也为真,因为它有一个元素。

在两个常量值进行选择时,and-or会让你的代码更简单。但如果你觉得这个技巧带来的副作用已经让你头大了,没关系,用if-else可以做相同的事情。不过在Python的某些情况下,你可能没法使用if语句,比如lambda函数中,这时候你可能就需要and-or的帮助了。

什么是lambda函数?呵呵,这是Python的高阶玩法,你去了解一下吧!

恭喜你在Python的道路上又坚持了一天,以上就是马哥教育今天为大家分享的关于Python学习中and-or使用技巧的文章,希望本篇文章能够对正在 Python学习 和从事Python相关工作的小伙伴们有所帮助,想要了解更多相关知识记得关注马哥教育官网。最后祝愿小伙伴们工作顺利!

声明:文章来源于网络,如有侵权请联系删除!

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!