#Python的逻辑短路问题
##例一
先来看一段代码:
分析---->Python解释器执行代码的时候发现or左边是True,所以不会再继续判断or右边的False(因为整个表达式就是True),而or表达式取决于解释器最后的执行的值,在上边的例子中,True就是最后被解释执行的值,所以整个表达式的值就是True,这就是短路效应。
##例二
分析---->Python从左往右执行,先是a(),返回的值是True,后面是and语句,不能短路,继续和b()进行逻辑运算,a() and b() 输出的b()的逻辑值是True,接着和c() 进行逻辑运算,b() and c()的逻辑值是False,后面跟着and语句,就全部会被短路,最后只能打印出ABC,而不是OK.
#例三
分析---->a()的逻辑值是True,其后的均为or语句,所以会全部短路,最终只能打印出A,而if语句的结果是True,所以就会打印出OK;
#总结
1.表达式从左到右运算,如果or的左侧逻辑值是True,则短路or后所有的表达式(不管是and还是or),直接输出or左侧的值;
2.表达式从左到右,若and的左侧逻辑值为False,则短路其后的所有and表达式;直到or出现,输出and左侧表达式到or的左侧,接着接下来的逻辑运算;
3.or的左侧是False,或者and的左侧是True则不能使用短路逻辑。
关注我的编程,编程路上少迷路!
本文参考资料:
《python中 and 和 or 运算的核心思想 ——— 短路逻辑》
《python and与or》
领取专属 10元无门槛券
私享最新 技术干货