Python的"短路"

今天做题的时候,看到一道关于优先级的题目,我顿时蒙了???

为什么 0 and 1 返回的是0?为什么 3 and 4却返回的是4?

天呐?这到底是为什么???不知道初学的小白是否也有着跟我一样的困惑?

经过不停的翻阅资料,看大牛们的博客,我顿时明白了

听说过“短路逻辑(short-circuit logic)”吗?

    逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说 

可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真
(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表
达式就会立刻返回 False,而不用去管 y 变量的值。这种行为同样也应用与
or 操作符,实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值
(0),否则它就会返回 y 的值。
这种行为被称为短路逻辑(short-circuit logic)或者惰性求值(lazy
evaluation)。

02

首先要知道优先级顺序:not>and>or

其次要知道在Python中所有的空字符串都是假,非空字符串都是真,非零的数字都是真。要重点记住!

接着要知道下面这几个知识点!

对于and:
只要左边的表达式为真,那么整个表达式返回的是右边表达式的值,否则返回的是左边表达式的值
换言之,x and y 的值只能是x 和 y,x为真时就是y,x为假就是x

对于or:
只要两边的表达式都为真,整个表达式的结果返回的是左边表达式的值;
如果一真一假,返回真值表达式的值;
如果两个值都假,比如空值和0,返回的是右边的值(空值或0)
换言之,x or y 的值只可能是 x 和 y,x为真就是x,x为假就是y

对于not x:
x为假,输出True
x为真,输出False
emmm…看起来,x and y 与 x or y 的返回结果是相反的

                              03

下面举栗子来详细说明:

  1. (False or 5)输出5 #False删除线格式 为假,在or中,x为假—>输出y

    (5 or False)输出5 #5为真,在or中,x为真—>输出x

    (0 or False)输出False # 0是假

    (True or 3)输出True #True为真

    (2 or True)输出2 #2为真

    (0 or True)输出True #0为假

    (True or False)输出True #True为真

    (True and 4)输出4 #True为真,在and中,x为真—>输出y

    (1 and True)输出True #1为真

    (False and 1)输出False #False为假,在and中,x为假—>输出x

    (1 and False)输出False

    (0 and True)输出0

    (not 3)输出False #3为真,在not中,x为真—>输出False

    (not 0)输出True

注意:布尔类型bool是特殊的整型,True相当于1,False相当于0

给大家出道题:

请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
如果你的答案是0,那你就中了python的招了

想知道正确答案,关注公众号,回复 答案 获取正确答案

欢迎大家关注公众号,零距离接触小生,一起分享美好事物。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值