其他的数字类型——布尔型
一些人可能会争论到: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)
<class 'bool'>
>>> 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
如何工作。
推荐文章: