Python支持布尔类型的数据,布尔类型只有TrueFalse两种值,但是布尔类型有以下几种运算:

与运算:只有两个布尔值都为 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中布尔类型 短路计算原理相关推荐

  1. Python中布尔类型

    我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...

  2. 在python中布尔类型的值包括_Python中布尔类型

    我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...

  3. python中布尔类型是特殊的什么类型_Python中布尔类型

    标签: 我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True ...

  4. python中布尔类型的值包括_Python 布尔值(Booleans)

    1.布尔值(Booleans) 在编程中,您通常需要知道表达式是True还是False. 您可以评估Python中的任何表达式,并获得两个答案之一,True或False. 比较两个值时,将对表达式求值 ...

  5. python中布尔类型是特殊的_Python中的特殊方法以及应用详解

    前言 Python 中的特殊方法主要是为了被解释器调用的,因此应该尽量使用 len(my_object) 而不是 my_object.__len__() 这种写法.在执行 len(my_object) ...

  6. python布尔类型运算_Python中布尔类型

    我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...

  7. python输出布尔值true_关于python中bool类型的重要细节

    原标题:关于python中bool类型的重要细节 0. 导读 大家好,欢迎来到 Crossin的编程教室 ! 布尔类型是Python中必不可少的一种数据类型.它看起来很简单,仅包括True和False ...

  8. python之布尔类型

    python之布尔类型 1 布尔类型 2 bool() 函数 3 逻辑运算符 4 比较运算 5 总结 1 布尔类型   布尔类型是计算机中最基本的类型,它是计算机二进制世界的体现,一切都是0和1.Py ...

  9. 全面理解Python中的类型提示(Type Hints)

    众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...

最新文章

  1. Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)...
  2. laravel-admin 使用记录(2) - 快速搭建 CURD
  3. 优化网站设计(七):避免在CSS中使用表达式
  4. java awt区域_java的awt包中有没有表示区域的类或者方法,可以传递一个Rectangle
  5. redis springmvc mysql_redis和mysql怎么一起在springmvc里面
  6. java操作ssdb:set、map、list..
  7. 门户网站的免费写手我们可怜的SEOer
  8. pythonpy文件打包成exe软件
  9. DDD战略篇:架构设计的响应力
  10. [C++] - auto的使用、优点和缺点
  11. NameError: name 'words' is not defined
  12. python去重复功能_python包中的statmodels,如何处理完全重复的功能?
  13. DNS(1) DNS基本概念和域名系统
  14. 【渗透案例】上班摸鱼误入陌生网址——结果被XSS劫持了
  15. 图像处理之基础---叹为观止的图像处理
  16. 微信 原创保护开通申请协议内容
  17. postman导入postman_collection文件
  18. 80和443端口的区别
  19. 提交application/x-www-form-urlencoded类型数据
  20. 多线程总结--小码哥java

热门文章

  1. 如何快速剪切视频 剪切视频用什么软件好 教你怎么快速剪切视频片段
  2. SoundTouch音频处理库源码分析及算法提取(6)
  3. WinCC 变量记录和报警记录备份数据连接后不显示
  4. 实验一 Linux基本命令
  5. dq轴是怎么定义的(并分析了坐标系超前滞后关系)
  6. 【代码超详解】洛谷 P2922 [USACO08DEC]秘密消息Secret Message
  7. python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
  8. 华为hn8346v5联通光猫恢复华为登录界面已通过
  9. 编译Darknet----debug历程
  10. AR技术在智慧城市交通规划中的作用分析