还是从一道题目说起…

已知x=43,ch=‘A’,y = 1,则表达式(x>=y and ch<‘b’ and y)的值是:
A、 0
B、1
C、出错
D、True

正解是:B


这道题目其实表达式看起来很容易
x=43,y=1 那么x>=y的值为True
ch=‘A’,字符比较转为ASCALL码65 字符’b’转成的ASCALL码98对比,也为True
最后的y=1,那么最终表达式简化为

前面的比较不难理解,不过最终结果为什么是为1呢?
这里就要讲到Python的短路逻辑了

Python短路逻辑

布尔运算符有个有趣的特性:只有在需要求值时才进行求值。举例来说,表达式x and y需要两个变量都为真时才为真,所以如果x为假,表达式就会立刻返回false,而不管y的值(事实上各个语言都有这个特性)。实际上,如果x为假,表达式会返回x得值----否则它就返回y的值。这种行为被称为短路逻辑(short-circuit logic)或惰性求值(lazy evaluaion):布尔运算符通常被称为逻辑运算符,就像你看到的那样第2个值有时“被短路了”。这种行为对于or来说也同样适用。在表达式x or y中,x为真时,它直接返回x的值,否则返回y值。注意,这意味着在布尔运算符之后的所有代码都不会执行。

以下看几个示例验证下:

and示例:

or示例

从以上结果可以看出短路逻辑确实是存在的,可以简单理解为:
如果只看第一个值就能得出结果,就不再管第二个值,否则就只给第二个值

Python短路逻辑相关推荐

  1. python短路逻辑特性,使用Python三目计算符的用法及短路逻辑方法介绍

    今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ...

  2. python 中的短路逻辑是什么?

    先说结论:从左到右,哪个可以得出结论就输出哪个. 短路逻辑规则如下: 表达式从左至右运算 1. or逻辑 若 or 的左侧逻辑值为 True ,则直接输出 or 左侧表达式 . 若 or 的左侧逻辑值 ...

  3. python逻辑运算符or的短路求值特性_[Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑...

    好吧题目非常easy.可是有些细节还是挺有意思的. 题目是:计算今年是否是闰年,推断闰年条件,满足年份模400为0,或者模4为0可是模100不为0 答案是这种: import time #计算今年是否 ...

  4. Python中 and 和 or 运算短路逻辑

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

  5. 浅谈python的短路逻辑

    在python中有一个非常有意思的概念--短路逻辑. 我们都知道,在python中有一些空值比如,False,[],0,'',None,都可以当作非真逻辑值,在逻辑表达式中a and b 中如果a为真 ...

  6. python中逻辑运算符and,or的用法以及运算的核心思想——“短路逻辑”超详细讲解

    python中and和or的用法以及运算的核心思想--"短路逻辑"超详细讲解 //本文几乎涵盖了and和or所有知识点,篇幅较长,一点要静下心来看,学无止境. 1.and和or的含 ...

  7. python短路原则

    '# #python短路原则' python中 and 和 or 运算的核心思想 --- 短路逻辑 包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 ...

  8. JavaScript新手学习笔记4——我记不住的几个坑:短路逻辑、按值传递、声明提前...

    1.短路逻辑 逻辑运算中,如果前一个条件已经可以得出最终结论,则后续所有条件不再执行!这里的逻辑运算指的是逻辑与和逻辑或. 我们要理解逻辑与是两个条件都为真的时候,才为真,如果第一个就是假的,那么后面 ...

  9. JS逻辑运算符——短路逻辑

    短路逻辑 当执行完第一个条件不再执行第二个条件,就会产生短路逻辑 (关注点在于第二个条件(表达式)是否执行)</font> && 当第一条件为false就不再执行第二个条件 ...

最新文章

  1. javascript与java正则表达式写法的区别
  2. 9.0 C++远征:对象成员
  3. Solrj实现增删改查
  4. 使用harbor搭建docker镜像私有仓库
  5. python实现多线程输出123123
  6. 云服务器带宽如何选择?
  7. Python如何判断某天是星期几
  8. C#中DataTime.Now函数详解
  9. 利用ACC控制酷狗音乐
  10. 读《史蒂夫•乔布斯传》(七)
  11. 基于OCCT7.4的实验性CAD程序
  12. bad assignment报错
  13. Exp2 后门原理与实践 20164302 王一帆
  14. 3D建模京东商品3D展示怎么做?
  15. java公路车组装教程_自行车DIY入门教程,图文展示自行车组装全过程。(原创图文,转载请注明出处)...
  16. VMware ESXi支持配置最大值
  17. Linux 远程工具
  18. 通用SSM项目环境搭建详细教程
  19. 【我的OpenGL学习进阶之旅】关于3D模型知识之:什么是obj文件和mtl文件
  20. 利用ApacheCXF自动生成webservice的客户端代码

热门文章

  1. matlab2014 电力电子,免费产品试用 - 电力电子控制设计 - MATLAB Simulink
  2. Eigrp md5认证
  3. PHP解决数学的游戏问题,幼儿园数学区域材料的投放问题及对策
  4. 【知识兔最牛Excel教程】PPT与Excel中图、表链接起来,自动更新
  5. 手写模板——前端总结
  6. 软件安装 怎么安装与破解Xmind 8 pro
  7. 诛仙手游服务器维护到几点,诛仙手游11月9日更新维护到几点 11.9更新了什么
  8. 保护卡下机房维护(装缷软件,改变设置)
  9. MySQL--mysqldump命令详解
  10. 极客日报:小米回应印度追缴税款;阿里回应达摩院副总裁王刚离职;iPhone日历App现Bug,多个国家地区无法显示2022年假期