看python多线程那部份的东西时看到一个好玩的东西,因为我也是初学python。所以写在这里加强一下记忆。

关于and

先看个例子:

1 ‘a' and 'b' and 'c'
2 '' and 'b'
3 'a' and 'b'

  这个的输出是:

1 'c'
2 ''
3 'b'

解释一下为什么:

在布尔环境中除了0,‘’,{},[],(),None是假以外,其它几乎所有东西的布尔环境都是真。在用and的时候如果所有的布尔环境都是真,那么返回的是最后一个布尔环境为真的值。

如果有一个为假,则返回第一个布尔环境为假的值。

关于 or

1 'a' or 'b'
2 '' or 'b'
3 '' or {} or None

 输出:

1 'a'
2 'b'
3 None

  同样给出这段输出的解释:

不难发现or的规则和and是类似的:遇到布尔环境为真的立即返回这个值,所以第一个输出是‘a’,而第二个中‘’为假‘b’为真,所以返回的是‘b’。当所有的值的布尔环境都为假时,返回的是最后一个值。

关于and-or

熟悉c语言或者java语言的一定知道三元预算符这个说法,也就是bool?1:0这种形式,其实and-or和这个类似。

来吧,少年,再举个栗子

1 a = 'first'
2 b = 'second'
3 1 and a or b
4 0 and a or b

  输出如下:

1 ‘first’
2 ‘second’

原因是酱紫的:1为真对吧,所以返回的是a;0为假,所以返回的是b。

但四,这里有陷阱!

比如:

1 a = ''
2 b = 'second'
3 1 and  a or b

你猜它的输出是什么

没错,你想错了>~~<!

'second'

因为1 and '' 的值为''(还记得前面说过的吗),'' or 'second'的运算结果是‘second’。

所以在用and-or的时候一定要保证a为真。否则会蛋疼的少年!

那么如何规避这种错误的结果呢,《Dive into python》中给出了思路

你可以这样,这样,然后这样>~<(为毛我第一次写博客这么兴奋啊)

1 a = ''
2 b = 'second'
3 (1 and [a] or [b])[0]

因为[a]是一个非空列表,所以[a]一定是真。

最后要说的是and,or,and-or的远算都是从左往右。

写完鸟》!《

转载于:https://www.cnblogs.com/lianwl/p/3180369.html

tricks about and-or in python相关推荐

  1. Tricks(二十三)—— Python 实现树这种数据结构

    普通二叉树 class Node:def __init__(self, point):self.left = Noneself.right = Noneself.point = point 当然也在构 ...

  2. 后悔没早知道这些Python特性

    写 Python 也好几年时间了.讲道理,在工作中大家肯定遇到过这样的场景: 这个故事告诉我们什么?先造轮子再去 GitHub?还是提高下 GitHub 搜索技巧? 都不是! 实际上,在日常的工作中, ...

  3. 使用python数据分析_如何使用Python提升您的数据分析技能

    使用python数据分析 If you're learning Python, you've likely heard about sci-kit-learn, NumPy and Pandas. A ...

  4. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  5. 自学python书籍怎么选-自学Python可以选择哪些入门书籍?

    最近从阮一峰先生博客看到一个资源链接,这是关于 Python 的学习资源,文章名是<ESSENTIAL RESOURCES TO LEARN ABOUT PYTHON>,这个链接文章中列举 ...

  6. 转载:Python 的关键字 yield 有哪些用法和用途?

    原始链接:https://www.zhihu.com/question/345210030/answer/841903171 Python 的关键字 yield 有哪些用法和用途? 飞鸿 人生到处知何 ...

  7. 学习python最好的书籍_最好的Python书籍

    学习python最好的书籍 Python is an amazing programming language. It can be applied to almost any programming ...

  8. python 3.7 最佳python中文工具书籍下载

    筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. 筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3. ...

  9. 自己的电脑上怎么用python3.7_python 3.7极速入门教程9最佳python中文工具书籍下载...

    筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...

  10. python基础教程 pdf github_Python极速入门的多本最佳书籍,不可错过的Python学习资料...

    Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. p ...

最新文章

  1. 经验 | 详解 Faster R-CNN目标检测的实现过程
  2. php流媒体视频下载,如何使用PHP流媒体文件?
  3. 职业相关职位及职位能力要求知识点大纲范围
  4. 王爽汇编习题 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 ___ 到 ____。
  5. 2-6 基于SpringBoot的SpringSecurity环境快速搭建与验证
  6. css选择器位置和数量技巧
  7. 自定义日期输入控件-解决需要用户输入日期的麻烦控制
  8. 基于stc89c58的万年历设计
  9. psd转html的素材,Ai转PSD格式完美保留图层脚本插件
  10. Xcode调试中如何将指定地址转换为其指向的对象
  11. 10-38 A4-7在订单详细信息表中查找包含产品种类数超过特定值的订单信息 (20 分)
  12. COB--COF--COG--TAB--TCP
  13. 5.8GHz雷达感应模块应用,智能家居照明技术,微波雷达传感器
  14. S71200西门子PLC一个设计的接线图
  15. 正切tan的概念实体化
  16. 浅谈人机交互设计系统
  17. Jenkins pipeline push Git tag
  18. (0091)iOS开发itms-services协议安装IPA安装包
  19. 大连工作后到外省就业要办的手续
  20. 抓取设了CSS反爬机制的大众点评数据(下)

热门文章

  1. thymeleaf获取url地址跳转时所带参数
  2. python幂运算的符号有哪些及画法_SymPy 符号计算基本教程
  3. 【CCCC】L3-011 直捣黄龙 (30分),Dijkstra维护点权,节点数,路径条数等+路径打印
  4. larveral 直接拷贝安装_做一个能引导所有系统的安装盘
  5. 泽众性能测试软件,软件测试工具-测试管理工具-自动化测试工具-性能测试工具-SPASVO泽众软件测试网...
  6. 红帽子企业版linux 7,红帽企业 Red Hat Enterprise Linux 7.8 发布
  7. linux系统编程shell,Linux系统中的 Shell 编程
  8. 存储过程循环遍历一个月的每一天的函数_3.3 循环
  9. 字符串(如何输入一行带有空格的字符串)
  10. 神经网络测试集loss不变_神经网络训练过程中不收敛或者训练失败的原因