Python中布尔类型 短路计算原理
Python支持布尔类型的数据,布尔类型只有True
和False
两种值,但是布尔类型有以下几种运算:
与运算:只有两个布尔值都为 True 时,计算结果才为 True。
True and True # ==> True True and False # ==> False False and True # ==> False False and False # ==> False
或运算:只要有一个布尔值为 True,计算结果就是 True。
True or True # ==> True True or False # ==> True False or True # ==> True False or False # ==> False
非运算:把True变为False,或者把False变为True:
not True # ==> False not False # ==> True
布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。
在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:
a = True print a and 'a=T' or 'a=F' 结果为a=T
计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?
因为Python把0
、空字符串''
和None
看成 False,其他数值和非空字符串都看成 True,所以:
True and 'a=T' 计算结果是 'a=T' 继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'
a = True print ('a=i' or a or 'a=F')
结果为a=i
要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。
1. 在计算 a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
2. 在计算 a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
请运行如下代码,并解释打印的结果:
a = 'python' print 'hello,', a or 'world' 结果为hello,pythonb = '' print 'hello,', b or 'world' 结果为hello,world
转载自:
https://blog.csdn.net/azsx02/article/details/68998263
Python中布尔类型 短路计算原理相关推荐
- Python中布尔类型
我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...
- 在python中布尔类型的值包括_Python中布尔类型
我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...
- python中布尔类型是特殊的什么类型_Python中布尔类型
标签: 我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True ...
- python中布尔类型的值包括_Python 布尔值(Booleans)
1.布尔值(Booleans) 在编程中,您通常需要知道表达式是True还是False. 您可以评估Python中的任何表达式,并获得两个答案之一,True或False. 比较两个值时,将对表达式求值 ...
- python中布尔类型是特殊的_Python中的特殊方法以及应用详解
前言 Python 中的特殊方法主要是为了被解释器调用的,因此应该尽量使用 len(my_object) 而不是 my_object.__len__() 这种写法.在执行 len(my_object) ...
- python布尔类型运算_Python中布尔类型
我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...
- python输出布尔值true_关于python中bool类型的重要细节
原标题:关于python中bool类型的重要细节 0. 导读 大家好,欢迎来到 Crossin的编程教室 ! 布尔类型是Python中必不可少的一种数据类型.它看起来很简单,仅包括True和False ...
- python之布尔类型
python之布尔类型 1 布尔类型 2 bool() 函数 3 逻辑运算符 4 比较运算 5 总结 1 布尔类型 布尔类型是计算机中最基本的类型,它是计算机二进制世界的体现,一切都是0和1.Py ...
- 全面理解Python中的类型提示(Type Hints)
众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...
最新文章
- Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)...
- laravel-admin 使用记录(2) - 快速搭建 CURD
- 优化网站设计(七):避免在CSS中使用表达式
- java awt区域_java的awt包中有没有表示区域的类或者方法,可以传递一个Rectangle
- redis springmvc mysql_redis和mysql怎么一起在springmvc里面
- java操作ssdb:set、map、list..
- 门户网站的免费写手我们可怜的SEOer
- pythonpy文件打包成exe软件
- DDD战略篇:架构设计的响应力
- [C++] - auto的使用、优点和缺点
- NameError: name 'words' is not defined
- python去重复功能_python包中的statmodels,如何处理完全重复的功能?
- DNS(1) DNS基本概念和域名系统
- 【渗透案例】上班摸鱼误入陌生网址——结果被XSS劫持了
- 图像处理之基础---叹为观止的图像处理
- 微信 原创保护开通申请协议内容
- postman导入postman_collection文件
- 80和443端口的区别
- 提交application/x-www-form-urlencoded类型数据
- 多线程总结--小码哥java
热门文章
- 如何快速剪切视频 剪切视频用什么软件好 教你怎么快速剪切视频片段
- SoundTouch音频处理库源码分析及算法提取(6)
- WinCC 变量记录和报警记录备份数据连接后不显示
- 实验一 Linux基本命令
- dq轴是怎么定义的(并分析了坐标系超前滞后关系)
- 【代码超详解】洛谷 P2922 [USACO08DEC]秘密消息Secret Message
- python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
- 华为hn8346v5联通光猫恢复华为登录界面已通过
- 编译Darknet----debug历程
- AR技术在智慧城市交通规划中的作用分析