其他的数字类型——布尔型 | 第二部分 类型与操作 —— 第 5 章: 数字类型 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-金年会app官方网

未匹配的标注

一些人可能会争论到: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)

>>> 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如何工作。

本文章首发在 金年会app官方网 网站上。

上一篇 下一篇
讨论数量: 0



暂无话题~
网站地图