其他的数字类型——布尔型

未匹配的标注

一些人可能会争论到:Python的布尔类型,bool本质上是数字,因为它的两个值 TrueFalse,只是整数1和0的以不同方式打印出的自定义版本。虽然这是大多数程序员需要知道的全部,但让我们更详细的探索一下这个类型。

更规范的说,今天的Python有明确的名为bool的布尔数据类型,有可用的值TrueFalse作为预先赋值的内置名称。在内部,名称TrueFalsebool的实例,它们反过来只是内置整数类型int的一个子类(从面向对象的角度)。 TrueFalse表现得和整数1和0完全相似,除了它们有自定义的打印逻辑——它们将自己打印为单词TrueFalse,而非数字1和0。bool通过为它的两个对象重新定义strrepr字符串格式来达到这个目的。

因为这个自定义,在交互式提示符键入的布尔表达式输出打印为单词TrueFalse而非更老和更不明显的1和0。另外,布尔型让真值在代码中更明确。比如,无限循环现在可以编码为while True:,而不是更不直观的 while 1:。类似地,标记能更清楚以flag = False初始化。将在第三部分进一步讨论这些语句。

然而,再说一次,对大多数实际用途来说,可以将TrueFalse当做被设置为整数1和0的预定义变量。不管怎样,大多数程序员一直都是将TrueFalse预先赋值为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章再次复习来看布尔操作符如andor如何工作。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~