其他的数字类型——布尔型 | 第二部分 类型与操作 —— 第 5 章: 数字类型 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-江南app体育官方入口
一些人可能会争论到:python的布尔类型,bool
本质上是数字,因为它的两个值 true
和false
,只是整数1和0的以不同方式打印出的自定义版本。虽然这是大多数程序员需要知道的全部,但让我们更详细的探索一下这个类型。
更规范的说,今天的python有明确的名为bool
的布尔数据类型,有可用的值true
和false
作为预先赋值的内置名称。在内部,名称true
和false
是bool
的实例,它们反过来只是内置整数类型int
的一个子类(从面向对象的角度)。 true
和false
表现得和整数1和0完全相似,除了它们有自定义的打印逻辑——它们将自己打印为单词true
和false
,而非数字1和0。bool
通过为它的两个对象重新定义str
和repr
字符串格式来达到这个目的。
因为这个自定义,在交互式提示符键入的布尔表达式输出打印为单词true
和false
而非更老和更不明显的1和0。另外,布尔型让真值在代码中更明确。比如,无限循环现在可以编码为while true:
,而不是更不直观的 while 1:
。类似地,标记能更清楚以flag = false
初始化。将在第三部分进一步讨论这些语句。
然而,再说一次,对大多数实际用途来说,可以将true
和false
当做被设置为整数1和0的预定义变量。不管怎样,大多数程序员一直都是将true
和false
预先赋值为1和0的;bool
类型只是让其成为标准。然而,它的实现会导致奇怪的结果。因为true
仅仅是带有自定义显示格式的整数1,true 4
在python中得到整数5!
>>> type(true)
>>> isinstance(true, int)
true
>>> true == 1 # 值相同
true
>>> true is 1 # 但是一个不同的对象:见下一章
false
>>> true or false # 和: 1 or 0 一样
true
>>> true 4 # (嗯。。。)
5
因为在真实python代码中可能不会碰到像上面最后一个表达式,所以可以放心地忽略掉它的任何更深奥的玄学内涵。
在第9章将复习布尔型来定义python的真值的概念,然后在第12章再次复习来看布尔操作符如and
和or
如何工作。