设为首页 加入收藏

TOP

Python3 中 and 和 or 运算规律(一)
2018-07-13 06:07:08 】 浏览:184
Tags:Python3 and 运算 规律

 首先从基本的概念着手,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  ''  ==>  ''


总结: 前提一个运算符的情况
1.or 从左到右,返回第一个为真的值,都为假返回后一个值
2.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 ('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():
    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()

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python中多进程深入解析 下一篇Java带参数的线程类Parameterized..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目