【廖雪峰python入门笔记】布尔运算和短路计算
1. 布尔运算
布尔类型只有True和False两种值,但是布尔类型有以下几种运算:
1.1 与运算:
只有两个布尔值都为 True 时,计算结果才为 True。
True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False
1.2 或运算:
只要有一个布尔值为 True,计算结果就是 True。
True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False
1.3 非运算:
把True变为False,或者把False变为True:
not True # ==> False
not False # ==> True
布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。
2. 短路计算
在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:
a = True
print(a and 'a=T' or 'a=F')
计算结果不是布尔类型,而是字符串 a=T
,这是为什么呢?
因为Python把0
、空字符串''
和None
看成 False
,其他数值
和非空字符串
都看成 True
,所以:
True and ‘a=T’ 计算结果是 ‘a=T’
继续计算 ‘a=T’ or ‘a=F’ 计算结果还是 ‘a=T’
要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算
。
在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算
时,只要能提前确定计算结果
,它就不会往后算了,直接返回结果。
实例
请运行如下代码,并解释打印的结果:
a = 'python'
print('hello,', a or 'world')
b = ''
print('hello,', b or 'world')
即判断hello, 后输出的是什么。
我们知道a or b 会发生短路计算:
a True 则输出a ,a False 则输出b,所以结果为:
hello, pythonhello, world
【廖雪峰python入门笔记】布尔运算和短路计算相关推荐
- 【廖雪峰python入门笔记】列表生成式
1. 生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, ...
- 【廖雪峰python入门笔记】迭代
1. 迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过for ...
- 【廖雪峰python入门笔记】切片
1. 对list进行切片 对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素 ...
- 【廖雪峰python入门笔记】函数
1. 函数 我们知道圆的面积计算公式为: S = πr² 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = ...
- 【廖雪峰python入门笔记】dict
1. dict 我们已经知道,list和tuple 可以用来表示顺序集合,例如,班里同学的名字: ['Adam', 'Lisa', 'Bart'] 或者考试的成绩列表: [95, 85, 59] 但是 ...
- 【廖雪峰python入门笔记】for循环
list或tuple可以表示一个有序集合.如果我们想依次访问一个list中的每一个元素呢?比如 list: L = ['Adam', 'Lisa', 'Bart'] print(L[0]) print ...
- 【廖雪峰python入门笔记】if语句
1. if语句及缩进规则 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if ...
- 【廖雪峰python入门笔记】tuple_创建单元素
tuple和list一样,可以包含 0 个.1个和任意多个元素. 包含多个元素的 tuple,前面我们已经创建过了. 包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示: t = ( ...
- 【廖雪峰python入门笔记】list_按照索引访问
1. 按照索引访问list Python按照索引访问list 由于list是一个有序集合,所以,我们可以用一个list按分数从高到低表示出班里的3个同学: L = ['Adam', 'Lisa', ' ...
最新文章
- 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java
- Tyvj-TOM的无穷序列
- 用好这个新功能,报表数据安全瞬间提升一个等级!
- 好用的python学习软件_5种好用的Python工具!Python学习分析
- 你还在抱怨开发工具,为什么不动手优化? | 人物志
- vue 报错 Error: timeout of 5000ms exceeded
- jmeter正则中常见的转义字符-笔记三
- Linux下编译软件时指定安装目录
- Win10安装Nek5000
- c语言单片机编程教学大纲,单片机应用技术[C语言]教学大纲.doc
- C++模板编程(18)---模板实例化instantiation
- bi报表工具应该具备哪些功能
- spring中 allowBeanDefinitionOverriding(spring.main.allow-bean-definition-overriding)原因分析、解决办法
- 找不到xinput1_3.dll怎么办?如何修复dll文件缺失
- Python招聘职位大体是两个方向
- java 数据周期预测_预测算法 | Holt Winter季节性指数平滑法 附JAVA代码
- Vue 3 模板语法
- HDUOJ1865 1string
- LOJ10155 一本通1577 数字转换 题解
- 一篇好文之Android数据库 GreenDao的使用指南(源码+案列)