加入收藏 | 设为首页 |

糖醋鱼的做法-小猿圈python学习之python3 中 and 和 or 运算规则

海外新闻 时间: 浏览:349 次

跟着python言语被越来越多的公司拿来做开发,导致越来越多的人挑选学习或许改行python开发,小猿圈也为了协助更多的人把握python言语,会持续给咱们共享一些关于python的小技巧和常识,今日给咱们共享的是在python3中and和or的运算规矩。

一、包括一个逻辑运算符

首要从根本的概念着手,python中哪些目标会被当成 False 呢?而哪些又是 True 呢?

在Python中,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,假如完成了 __ nonzero __ () 或 __ len __ () 办法且办法回来 0 或False,则其实例也被当作False,其他目标均为True。

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

1 and 2 ==> 2 1 or 2 ==> 1

1 and 0 ==> 0 1 or 0 ==> 1

0 and 1 ==> 0 0 or 1 ==> 1

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

总结:

or 从左到右,回来第一个为真的糖醋鱼的做法-小猿圈python学习之python3 中 and 和 or 运算规则值,都为假回来后一个值

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

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

逻辑运算符 and / or 一旦不止一个,其运算规矩的中心思维便是短路逻辑。好的,那咱们就来了解一下短路思维:

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

表达式从左至右运算,若 and 的左边逻辑值为 False ,则短路这以后一切 and 表达式,直到有 or 呈现,输出 and 左边表达式到 or 的左边,参加接下来的逻辑运算。

若 or 的左边为 False ,或许 and 的左边为 True 则不能运用短路逻辑。

就让咱们从简略的开端,假定满是 and 句子 或许满是 or 句子:

example 1

def a():

print ('A')

return []

def b():

print ('B')

return 1

def c():

print ('C')

return 1

def d():

print ('D')

return []

def e():

print (糖醋鱼的做法-小猿圈python学习之python3 中 and 和 or 运算规则'E')

return 1

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

print ('ok')

a() 为假 ,这以后均为 and 句子,悉数短路,终究只回来 a() 的表达式。记住,一切被短路的表达式均不会被输出。所以,此处只是打印 A 。

example 2

def a():

print ('A')

return 1

def b():

print ('B')

return 1

def c()糖醋鱼的做法-小猿圈python学习之python3 中 and 和 or 运算规则:

print ('C')

return []

def d():

print ('D')

return 1

def e():

print ('E')

return 1

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

print ('ok')

python 从左至右先履行 a() ,a() 回来的逻辑值为 True,后边是 and 句子,所以不能短路这以后,持续与 b() 进行逻辑运算,a() and b() 输出 b() 的逻辑值 True,接着与 c() 进行逻辑运算,b() and c() 输出 c() 的逻辑值 False,而这以后均为 and 句子, 则悉数短路,终究只打印了 A B C 。

example 3

def a():

print ('A')

return 1

def b():

print ('B')

return 1

def c():

print ('C')

return []

def d():

print ('D')

return 1

def e():

print ('E')

return []

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

print ('ok')

a() 的逻辑值为 True ,这以后均为 or 句子,悉数短路,终究只打印了 A,而 if 句子为 True ,所以还要打印一个 ok。

example 4

def a():

print ('A')

return []

def b():

print ('B')

return []

def c():

print ('C')

return 1

def d():

print ('D')

return []

def e():

print ('E')

return 1

if a() or b() or 余少群c() or d() or e():

print ('ok')

python 从左至右先履行 a() ,a() 回来的逻辑值为 False,后边是 or 句子,所以不能短路这以后,持续与 b() 进行逻辑运算,a() or b() 输出 b() 的逻辑值 False,接着与 c() 进行逻辑运算,b() or c() 输出 c() 的逻辑值 True,而这以后为 or 句子, 则悉数短路,终究只打印了 A B C ok。

下面咱们就来讲一下 and 与 or 句子一起存在的状况:

example 5

def a():

print ('A')

return []

def b():

print ('B')

return []

def c():

print ('C')

return 1

def d():

print ('D')

return []

def e():

print ('E')

return 1

def f():

print ('F')

return 1

def g():

print ('G')

return []

def h():

pri糖醋鱼的做法-小猿圈python学习之python3 中 and 和 or 运算规则nt ('H')

return 1

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

print ('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 。(结合上面的三点,渐渐剖析)

三. 三元运算操作符

在python2.5 之前,python 是没有三元操作符的,Guido Van Rossum 以为它并不能协助 python 愈加简练,可是那些习惯了 c 、 c++ 和 java 编程的程序员却尝试着用 and 或许 or 来模拟出三元操作符,而这使用的便是python的短路逻辑。

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

转化为 python 言语为:

1

bool and a or b

怎么了解呢? 首要 a , b 都为真,这是默许的。假如 bool 为真, 则 bool and a 为真,输出 a ,短路 b 。假如 bool 为假,短路 a,直接 bool or b ,输出 b 。

换一种更简略的写法:

1

return a if bool else b

好啦,今日共享的内容便是这些了,不知道咱们有没有记住呢,好记忆不如烂笔头,咱们记住记到小本本上哦,一起别忘记点赞和重视,假如觉得不错记住共享给身边的朋友一起来前进。