千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:南昌千锋IT培训  >  技术干货  >  python3 中 and 和 or 运算规律

python3 中 and 和 or 运算规律

来源:千锋教育
发布人:xqq
时间: 2023-11-05 22:07:32

一、包含一个逻辑运算符

首先从基本的概念着手,python中哪些对象会被当成False呢?而哪些又是True呢?

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

下面是最简单的逻辑运算:这里1,2都是Ture;0,‘’都是False

1and2==>21or2==>1

1and0==>01or0==>1

0and1==>00or1==>1

0and''==>00or''==>''

总结:

or从左到右,返回第一个为真的值,都为假返回后一个值

and从左到右,若所有值均为真,则返回后一个值,有一个假的值,则返回第一个假的值

二、包含两个及以上的逻辑运算符

逻辑运算符and/or一旦不止一个,其运算规则的核心思想就是短路逻辑。好的,那我们就来了解一下短路思想:

表达式从左至右运算,若or的左侧逻辑值为True,则短路or后所有的表达式(不管是and还是or),直接输出or左侧表达式。

表达式从左至右运算,若and的左侧逻辑值为False,则短路其后所有and表达式,直到有or出现,输出and左侧表达式到or的左侧,参与接下来的逻辑运算。

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

就让我们从简单的开始,假设全是and语句或者全是or语句:

example1

defa():

print('A')

return[]

defb():

print('B')

return1

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

ifa()andb()andc()andd()ande():

print('ok')

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

example2

defa():

print('A')

return1

defb():

print('B')

return1

defc():

print('C')

return[]

defd():

print('D')

return1

defe():

print('E')

return1

ifa()andb()andc()andd()ande():

print('ok')

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

example3

defa():

print('A')

return1

defb():

print('B')

return1

defc():

print('C')

return[]

defd():

print('D')

return1

defe():

print('E')

return[]

ifa()orb()orc()ord()ore():

print('ok')

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

example4

defa():

print('A')

return[]

defb():

print('B')

return[]

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

ifa()orb()orc()ord()ore():

print('ok')

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

下面我们就来讲一下and与or语句同时存在的情况:

example5

defa():

print('A')

return[]

defb():

print('B')

return[]

defc():

print('C')

return1

defd():

print('D')

return[]

defe():

print('E')

return1

deff():

print('F')

return1

defg():

print('G')

return[]

defh():

print('H')

return1

ifa()andb()andc()andd()ore()andf()org()andh():

print('ok')

别以为语句很长就很难,我们好好分析一下,从左至右,首先a()的逻辑值为False,其后到or语句为止有三个and语句:a()andb()andc()andd(),均被短路。只输出a(),得到a()ore()为True,输出e(),得e()andF()为True,输出f(),其后接or语句,则短路其后所有。最终只打印了AEFok。(结合上面的三点,慢慢分析)

三.三元运算操作符

在python2.5之前,python是没有三元操作符的,GuidoVanRossum认为它并不能帮助python更加简洁,但是那些习惯了c、c++和java编程的程序员却尝试着用and或者or来模拟出三元操作符,而这利用的就是python的短路逻辑。

三元运算操作符bool?a:b,若bool为真则a,否则为b。

转化为python语言为:

boolandaorb

如何理解呢?首先a,b都为真,这是默认的。如果bool为真,则boolanda为真,输出a,短路b。如果bool为假,短路a,直接boolorb,输出b。

换一种更简单的写法:

returnaifboolelseb

以上内容为大家介绍了python3中and和or运算规律,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。http://www.mobiletrain.org/

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

Python的进程和线程

2023-11-05

Python中的IDLE是什么?Python培训

2023-11-05

linux命令行界面黑屏?

2023-10-30

最新文章NEW

Python爬虫框架有哪些?

2023-11-05

clean命令linux?

2023-10-30

linux查找常用命令?

2023-10-30

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>