python ‘

您所在的位置:网站首页 逻辑运算什么意思 python ‘

python ‘

2024-07-04 13:33:55| 来源: 网络整理| 查看: 265

今天我遇到了这样一个问题:

source='reset' print(source.find('%reset') != -1 | source.strip().startswith('reset')) 得到的结果:False

我希望用以上代码判断source变量中是否含有字符串'reset'或者'%reset'。但是出乎意料的是,明明以上两个表达式中的第二个是True,第一个是False,为什么最终算出来是False呢?

在一些教程中,直接写明了python中,|和or在逻辑运算时意思相同。但这样的表述并不严谨,因为会忽略运算优先级的问题。

我曾经学过在C语言。在C语言中,||表示的是逻辑或,而|表示的则是按位或。在我看来,这种运算符标记,是比较方便的。

在python语言中没有||,只有|符号。当|两端可位运算时,就执行位运算。特别地,两端的变量为布尔型(True、False)的时候,就是逻辑或的关系。

从C语言过渡到主攻python之后,我便顺理成章的习惯于使用|作为判断标志,类似于C语言的||那样。一年多来一直没有遇到问题,或者是遇到问题后加括号就解决了。

今天,我终于打算上网深究一下这个问题。原来,我一直将|当成C语言中的||。殊不知,运算的优先级是有不同的。在C语言中,==是优先于||,但是Python中则是|运算符优先于==。

而实际上,python语言的|,和C语言中的|含义是一样的,都是按位运算的意思。在C语言中|在某些场合下也可以替换||,但也会引入优先级问题。

回到上面的问题:

source.find('%reset') != -1 | source.strip().startswith('reset')

代码中,由于!=优先级低于|,所以首先计算|两侧的值。-1|source.strip().startswith('reset'),两端的值分别为-1|0。进行按位或计算,得到-1。 接下来再计算source.find('%reset')!=-1,由于source中明显不含字符串'%reset',所以左端值为-1。由此整个式子化简为-1!=-1,最终结果为False。

这样,我们就找到了这个问题的症结所在。那么如何解决这个问题呢?

首先的方法就是加括号。

>>>print((source.find('%reset') != -1) | (source.strip().startswith('reset'))) True

其次,使用and 、 or来代替| 、 &。and、or的优先级在==(同优先级还有!=、>print(source.find('%reset') != -1 or source.strip().startswith('reset')) True

最后说一句,使用or代替|还有诸多好处。假设两边的判断语句是100*100==10000和999*999==10000,那么如果用or 的话,计算出第一个语句结果为True,就可以直接向下执行了;作为对比,用|(当然,要向上文那样加括号)的话,就必须算出两边的结果,按位或之后再向下执行。

于是得出结论:|是按位或,或逻辑运算有运算优先级上的不同。在逻辑判断的场合下,如果使用or,有助于简化括号层数,并且有助于加速。因此一般情况下推荐使用or。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

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

推荐新闻


图片新闻

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

专题文章

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