首页 » 技术 » Python » 短路逻辑和运算符优先级

短路逻辑 or and



为什么这段代码的输出结果是“4”?

(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
#输出结果
4

这个就和本章的短路逻辑有关
什么是短路逻辑?

短路逻辑的核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。

举个例子


进行以下操作

3 and 4
#输出结果
4
3 or 4
#输出结果
3

#and运算符的要求是
左右两个操作数的真值测试结果只有同时为True
才会显示最后一个True值
当有一个值是False时,将直接输出False的值,对后面的值也不会进行运算

#or运算符
左右两边有一个值为Ture,输出的值也就为Ture
左边有一个值为Ture,右边就不用运算

总结:从Python的角度来看,他根本就没有必要将最后的结果判断完在汇报,更高效的方法是直接将影响结果的关键值扔出来就可以了,这就是所谓的短路逻辑。

解释1中的代码

对于这种复杂的表达式
有小括号的先算小括号里的

上下结果呼应
(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
 false         0            4            6               9
 现在我们遇到的表达式就变成了这样
false or 0 or 4 or 6 or 9
#运行结果
4

运算符优先级

动动脑,下面这个运算结果是什么?

not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9

Python运算符的优先级讲的是
运算表达式时执行的先后顺序
先执行具有较高优先级的运算符,然后在执行较低优先级的运算符
例如小学就学到的先乘除后加减,这就是优先级
下图列出了Python的从低到搞得运算符优先级
注意:运算符1是比2要小的
想优先运算可加个小括号

短路逻辑和运算符优先级

标签:

未经允许不得转载:作者:王凯, 转载或复制请以 超链接形式 并注明出处 王凯博客
原文地址:《短路逻辑和运算符优先级》 发布于2020-05-10

分享到:
赞(2) 打赏 生成海报

评论 抢沙发

6 + 8 =


长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

荔枝云
粽情端午,主机全场5折!全场低至1元!年费主机仅需29!无需备案,极速访问!
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册