python中逻辑运算符and,or的用法以及运算的核心思想

您所在的位置:网站首页 逻辑运算啥意思 python中逻辑运算符and,or的用法以及运算的核心思想

python中逻辑运算符and,or的用法以及运算的核心思想

2024-07-02 12:23:37| 来源: 网络整理| 查看: 265

python中and和or的用法以及运算的核心思想——“短路逻辑”超详细讲解

//本文几乎涵盖了and和or所有知识点,篇幅较长,一点要静下心来看,学无止境。

1.and和or的含义

既然我们要运用and和or,那么首先就应该知道and与or的意思是什么。你可以把它当作数学里的与运算和或运算。假设a为真命题,b为假命题,那“a与b”是假命题,“a或b”为真命题。

在python中也是一样的意思,如下表:

运算符含义逻辑表达式说明and与运算a and b当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。or或运算a or b当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。 2.and和or的用法

python中的逻辑运算符有两种返回值,python运算符除了能操作bool类型表达式,还能操作其他所有类型的表达式。一些初学者可能没了解过运算符操作其他类型的表达式。并且返回的值也不止bool类型。下面我们就来详细了解and与or的两种用法。

运算bool类型 操作bool类型表达式的时候就是第一点中表格的用法。 下面我们来举几个例子就明白了: a = 1>2 and 12 or 1} = 10 #所以result = 10 or () 10 or () = 10 #所以最终结果 : result = 10

从上述例子来看,我们从左至右运算的最终结果就是正确结果啊,但是再让我们用这种方法来看看or和and混合运算时的结果:

result = 10 or 0 and 20 and 30 print(result) #输出结果为 10 #运算: 10 or 0 = 10 #所以result = 10 and 20 and 30 10 and 20 = 20 #所以result = 20 and 30 20 and 30 = 30 #所以最终结果 : result = 30

哎,好奇怪啊,怎么运算的结果和输出的结果不一样啊,明明都一步一步来运算的啊,真是奇怪。莫慌莫慌,这是因为啊,在python中,and和or运算时会短路,而这样“短路”现象,必须用我们的“短路逻辑”来运算了。

为了直观的看到在and与or运算时怎么会短路,我们使用方法来使用一下and和or。 先来看看都是and的情况:

def a(): print("a") return 0 def b(): print("b") return 1 def c(): print("c") return 1 def d(): print("d") return 1 result = a() and b() and c() and d() print("最终返回值:",result) #输出结果为: a 最终返回值:0

看见没,为什么a(),b(),c() ,d()都参与了运算,而只打印了a。那是因为在 运算中,a()的值是0,为False,而其后都是and运算符,所以全部被短路,系统根本就没有调用后面的方法参与运算了,所以只打印了a出来。这就是为什么叫“短路”现象。

再来看看都是or的情况:

def a(): print("a") return 0 def b(): print("b") return 1 def c(): print("c") return 2 def d(): print("d") return 3 result = a() or b() or c() or d() print("最终返回值:",result) #输出结果为: a b 最终返回值:1

a()为False,b()为True,所以 a() or b() = b(),b()为True,那么就要继续参与运算:b() or c() = b() 返回的是True,则第二个or其后所有的表达式都要被短路,注意是第二个or,因为第一个or左侧表达式a()为False,所以还要继续运算,没有短路。也就是从左至右,在哪个or运算到左侧逻辑值为True时,就短路哪个or之后所有的表达式。所以只打印了a,b,最终返回值为b()的值:1。

接下来就要实际运算到and和or都有的情况了:

def a(): print("a") return 0 def b(): print("b") return 1 def c(): print("c") return 2 def d(): print("d") return 3 def e(): print("e") return 0 def f(): print("f") return 4 def g(): print("g") return 0 def h(): print("h") return 5 result = a() and b() and c() or d() or e() and g() or h() print("最终返回值:",result) #输出结果为: a d 最终返回值: 3

千万不要看到这么长就觉得很难,只要你真正理解了短路逻辑的本质,它就是变身器,无论碰到什么怪兽时,你都能变身迪迦奥特曼打败它。当然了,你一定要相信光,相信迪迦。“迪迦!🎇”

我们先进行第一步运算, a() = 0,b() = 1, a() and b() = a() = 0; 所以第一个and后的所有and连接但是是下一个or出现之前的表达式都要被短路,也就是b(),c()会被短路。所以打印a但不打印b,c。 接着运算: a() or d() = d() = 3 or的左侧a为False,所以后面的表达式不会被短路,打印 d ,继续运算: d() or e() = d() =3 or的左侧d()为True,后面所有表达式都会被短路了, 所以最后的返回值为3。

值得注意的是:在有多个and,or连接运算的时候,很多初学者可能有绕懵,认为就只是运算符and,or 两侧的表达式在进行运算,不是的,是and,or两侧的逻辑值进行运算。 例如在上述例子计算d() or e()时,d()是被返回一个最终值在进行运算,也就是在运算过后要把a() and b() and c() or d()看成一个值,再去与后面的e 进行or运算,而不要直接就当作是d()在后面的e进行运算,是因为 a and b and c or d = d() 其实就等同于数学里:(a+b+c)* d,要先算括号里的值,但括号里是算出一个最终值A=a+b+c来,再进行接下来的运算A*d。

以上就是and和or的全部含义与用法,加油各位,我们,未来可期!

本文参考(在此表示感谢!): 博客园博主:luser_run



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭