问题出现:

Python 中的 or,and 运算,可以写出比较复杂的演算表达式;

看了一些大神的演算规则解释,觉得不是很好理解,有些人甚至理解错了规则。

这里聊一下自己的理解。

其他人是怎么做的:

先看两个例子热下身:

return 1 or 2

return 1 and 2

两元的 or and 运算可以通过死记来掌握:

如果有一个值为真,or 立刻返回第一个真值;

......

如果你记得两元的 or,and 运算规则,你肯定知道正确答案:

return 1 or 2 # 返回 1

return 1 and 2 # 返回 2

个人不推荐死记,因为容易忘记和甚至弄混淆。

可以这样理解:

Python 中,

or 可以理解为找真值演算,从左到右发现真值就返回真值;

如果两个都是假值,那就返回最后一个假值。

and 可以理解为找假值演算,从左到右发现假值就返回假值;

如果两个都是真值,那就返回最后一个真值。

演算规则简单归纳一下就是:

or :找真值:

如果有一个值为真,or 立刻返回第一个真值;

如果所有值都为假,or 返回最后一个假值。

and :找假值:

如果有一个值为假,and 立刻返回第一个假值;

如果所有值都为真,and 返回最后一个真值。

分析:

先来看比较难搞的三元演算表达式的例子:

return 0 and 1 or 2

相信你也发现了,三元的运算可以拆分成两个两元的运算表达式:

return 0 and 1 or 2 中:

0 and 1 :找假值,返回 0;

然后把返回的 0 继续和后面的表达式做演算:

0 or 2 :找真值,返回 2。

所以:

return 0 and 1 or 2 :# 返回 2

就是这么简单。

当然,这还没完!

还有一种特殊情况需要分析。

特殊情况分析:

当表达式的所有值都是真值,并且运算符不全部一致,

那么第一个 or 或 and 演算完,直接返回。

举两个梨子:

return 1 or 2 and 3 :

1 or 2:找真值返回1;因为全部值都是真值,且运算符不全部一致,直接返回。

return 1 and 2 or 3 中:

1 and 2:找假值返回2;因为全部值都是真值,且运算符不全部一致,直接返回。

所以:

return 1 or 2 and 3 :# 返回 1

return 1 and 2 or 3 :# 返回 2

特殊情况的反面:

可能会有人有疑问:

既然全部值都为真值,且运算符不全部一致的时候,只算第一个 or 或 and ,

那么全部值都为假值,且运算符不全部一致的话,是不是也只算第一个 or 或 and 呢!

答案是否定的。

我们来验证一下:

return '' or 0 and None

上面的结果返回的是 0;

return '' and None or 0

上面的结果返回的是 0;

那么全部值为真值,且运算符全部一致的时候呢:

return 0 and None and ''

上面的结果返回的是 0;

return '' or None or 0

上面的结果返回的是 0;

所以,就算值都是假值,也要老老实实做运算,别想着运算第一个 or 或 and 就完事了。

练习一下:

二元运算:

return 1 or 0

return 1 and 0

return 1 or 2

return 1 and 2

三元运算:

return 1 or 2 or 3

return 1 and 2 and 3

注意:上面两个表达式的值全部为真值,但是表达式的演算符号相同。

四元运算:

return '' and None or 0 and 1

(参考答案预警!你不打算在心里演算一下么?)

参考答案:

return 1 and 0 :# 返回 0

return 1 or 0 :# 返回 1

return 1 or 2 :# 返回 1

return 1 and 2 :# 返回 2

return 1 or 2 or 3 :# 返回 1

return 1 and 2 and 3 :# 返回 3

return '' and None or 0 and 1 :# 返回 0

小结:

or :找真值:

如果有一个值为真,or 返回第一个真值;

如果所有的值都为假,or 返回最后一个假值。

and :找假值:

如果有一个值为假,and 返回第一个假值;

如果所有的值都为真,and 返回最后一个真值。

特殊情况:

当表达式的所有值都是真值,并且运算符不全部一致,

那么第一个 or 或 and 演算完后直接返回。

2!=5 or 0在python中是否正确-Python 中的 or and 运算,看这一篇就够相关推荐

  1. Python操作Excel教程(全网最全,只看这一篇就够)

    目录 Python Excel库对比 1 Python xlrd 读取 操作Excel 1.1 xlrd模块介绍 1.2 安装xlrd模块 1.3 使用介绍 1.4 实战训练 2 Python xlw ...

  2. python中的数据类型有哪些是可阅读_Python list data type(list)[学习Python的必要基础知识][阅读本文],列表,数据类型,必备,看此,一篇,就够,了...

    您的"关注"和"点赞",是信任,是认可,是支持,是动力- 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 1 Python ...

  3. python控制手机微信_Python + Appium 自动化操作微信入门看这一篇就够了

    简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...

  4. 子进程中获取父进程id_进程全家桶,看这一篇就够了 | 原力计划

    作者 | 看,未来 责编 | 王晓曼 出品 | CSDN博客 初见进程,先查一下户口 1.进程环境 进程控制块PCB:就是进程在操作系统中的"户口",具体实现是 task_stru ...

  5. tensorflow官方中文文档(各种tf函数解释,看这一篇就够了)

    https://www.w3cschool.cn/tensorflow_python/tf_nn_max_pool.html

  6. anaconda的安装和使用(管理python环境看这一篇就够了)

    anaconda的安装和使用(管理python环境看这一篇就够了) 前言 一.Anaconda是什么? 二.Anaconda安装 三.Anaconda使用教程 四.pycharm使用anaconda创 ...

  7. python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...

    https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...

  8. python详细安装教程-超详细Python与PyCharm安装教程,看这一篇就够了

    原标题:超详细Python与PyCharm安装教程,看这一篇就够了 学习了三天的python, 之前测试一直用课程自带的网页版玩玩, 为了学习 然后就下载了一个python和pycharm 现在分享下 ...

  9. python打开word并在前台显示_Python自动化办公之Word,全网最全看这一篇就够了

    作者:超级大洋葱806 https://tangxing.blog.csdn.net/article/details/108418066 环境安装 使用Python操作word大部分情况都是写操作,也 ...

  10. python计算图解_图解NumPy,看这一篇就够了!

    晓查 编译整理 量子位 报道 | 公众号 QbitAI NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.然而对初学者来说,NumPy的大量运算方法非常难记. 最近,国 ...

最新文章

  1. UA MATH523A 实分析3 积分理论 概念与定理整理
  2. [html] HTML5中的article和section有什么区别?
  3. sql server添加外键的方法
  4. OpenCart支付宝付款接口(直接到账、担保交易、双接口)
  5. [SSL_CHX][2021-08-19]子矩阵求和
  6. 「 C++ MFC 」“读取.txt文档实例”讲解
  7. 一百元的钞票能拍卖出多少钱?
  8. 虚拟桌面的服务器,虚拟桌面与集合
  9. 企业对接钉钉流程(企业内部应用-H5)
  10. 基于stm32f103的红外对管(TCRT5000)接收发送
  11. 语音信号处理:librosa库【详解】
  12. Chrome谷歌浏览器的安装
  13. shell 脚本返回上级目录_Bash技巧:简单快速 cd 到多层上级目录的 Shell 脚本
  14. 鸿蒙投智慧屏交互,鸿蒙初体验:荣耀智慧屏跨系统交互构建新生态
  15. 中国联通5G白皮书大全(2018年发布)-随时下载
  16. avalon分页插件
  17. Java获取压缩包内文件数_使用java.util.zip.ZipFile,压缩包内文件数量过多则报错问题....
  18. 为什么很多公司转型 Go 语言开发?Go 语言能做什么
  19. Pr:创建自己的项目模板
  20. 我撸了一个微信,有点大,请过目...

热门文章

  1. python中的in运算符
  2. 一般关于大宗商品的供需关系相关的数据网址有哪些?
  3. intellij idea 实用快捷键
  4. 可扩展架构设计原则与面向对象设计原则脑图
  5. oracle1537,dataguard 出现ORA-16136错误
  6. ceph 查看是否在恢复_Ceph的最佳实践
  7. 计算机二级python基础知识总结-计算机二级python 知识点篇(程序的控制结构)...
  8. python语言开发的软件有哪些-最适合人工智能开发的5种编程语言,你知道几种?...
  9. python爬虫文件代码大全-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)...
  10. python多久学会自学-python自学多久