千家信息网

如何理解Python中 and 和 or 运算短路逻辑

发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,本篇文章为大家展示了如何理解Python中 and 和 or 运算短路逻辑,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。短路逻辑规则如下:表达式从左至右运算,
千家信息网最后更新 2025年01月30日如何理解Python中 and 和 or 运算短路逻辑

本篇文章为大家展示了如何理解Python中 and 和 or 运算短路逻辑,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

短路逻辑规则如下:

表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。若 or 的左侧逻辑值为 False ,则输出or右侧的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果。

表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。若 and 的左侧逻辑值为 True,则输出其后的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果

若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

注意:

1、在Python中and的优先级是大于or的,而且and和or都是会返回值的并且不转换为True和False。当not和and及or在一起运算时,优先级为是not>and>or

2、在Python中,None、任何数值类型中的0、空字符串""、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了  __ nonzero __ () 或 __ len __ () 方法且方法返回 0 或False,则其实例也被当作False,其他对象均为True。

下面是最简单的逻辑运算:

        True  and True    ==> True                                     True  or True    ==> True
True and False ==> False True or False ==> True
False and True ==> False False or True ==> True
False and False ==> False False or False ==> False

接下来我们再举一个具体的例子:

先来定义一组函数:

1>  def a():

2> print ('A')

3> return 1

4> def b():

5> print ('B')

6> return 1

7> def c():

8> print ('C')

9> return []

10> def d():

11> print ('D')

12> return []

13> def e():

14> print ('E')

15> return 1

例1:

17> if a() and b() and c() and d() and e():

18> print ('ok')



#显示结果如下

A

a() 为假 ,其后均为 and 语句,全部短路,最终只返回 a() 的表达式。记住,所有被短路的表达式均不会被输出。所以,此处仅仅打印 A

例2:

17> if a() and b() and c() and d() and e():

18> print ('ok')



#显示结果如下

A

B

C

python 从左至右先执行 a() ,a() 返回的逻辑值为 True,后面是 and 语句,所以不能短路其后,继续与 b() 进行逻辑运算,a() and b() 输出 b() 的逻辑值 True,接着与 c() 进行逻辑运算,b() and c() 输出 c() 的逻辑值 False,而其后均为 and 语句, 则全部短路,最终只打印了 A B C 。

例3:

17> if a() or b() or c() or d() or e():

18> print ('ok')



#显示结果如下

A

Ok

#显示结果如下

A

ok

a() 的逻辑值为 True ,其后均为 or 语句,全部短路,最终只打印了 A,而 if 语句为 True ,所以还要打印一个 ok。

例4:

    17> if a() or b() or c() or d() or e():

18> print ('ok')



#显示结果如下

A

B

C

Ok

python 从左至右先执行 a() ,a() 返回的逻辑值为 False,后面是 or 语句,所以不能短路其后,继续与 b() 进行逻辑运算,a() or b() 输出 b() 的逻辑值 False,接着与 c() 进行逻辑运算,b() or c() 输出 c() 的逻辑值 True,而其后为 or 语句, 则全部短路,最终只打印了 A B C ok。

例5:

 26> if a() and b() and  c() and d() or e() and f() or g() and h():

27> print ('ok')



#输出结果如下:

A

E

F

Ok

别以为语句很长就很难,我们好好分析一下,从左至右,首先a() 的逻辑值为 False,其后到 or 语句为止有三个 and 语句: a() and b() and c() and d(),均被短路。只输出 a(), 得到 a() or e() 为True,输出 e() ,得 e() and F() 为 True ,输出 f(), 其后接 or 语句,则短路其后所有。最终只打印了A E F ok 。

上述内容就是如何理解Python中 and 和 or 运算短路逻辑,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

逻辑 表达式 输出 逻辑值 运算 语句 结果 接下来 优先级 内容 技能 方法 知识 类型 简明 简明扼要 三个 例子 函数 右侧 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 开源mail企业邮箱服务器 计算机网络技术择业 服务器机箱装在哪个位置 江西省网络安全人员名单 研究生网络安全教育 武大网络安全专业名称 株洲智能软件开发公司 网络安全风险评估调研 帝国神话服务器没更新进不去 查找数据库中所有的数据表命令 网络安全技术论文选题原因 网络安全取什么题目 王者荣耀账号已绑定的服务器 网易服务器入门基本知识 fifaonline3国服数据库 重橙网络软件开发有限公司 成都大运会网络安全吗 外文数据库的检索方法与技术 论述网络技术对教育有影响吗 软件开发 不需用户过多参与 笔记本读写服务器信息错误 网络安全党课党员准则 计算机三级网络技术配置 数据库技术与应用 实训 泄露个人隐私触犯网络安全法 厦门软件开发百度贴吧 深圳南方电网软件开发 瓯海区现代化刀片服务器售后保障 网络安全部队雇佣兵主要来源 如何防范网络安全新闻稿
0