返回介绍

其他核心类型

发布于 2024-01-29 22:24:17 字数 1749 浏览 0 评论 0 收藏 0

到目前为止除了我们看到的核心类型外,还有其他的或许能够称得上核心类型的类型,这取决于我们定义的分类有多大。例如,集合是最近增加到这门语言中的类型,它不是映射也不是序列,相反,它们是唯一的不可变的对象的无序集合。集合可以通过调用内置set函数而创建,或者使用Python 3.0中新的集合常量和表达式创建,并且它支持一般的数学集合操作(Python 3.0中新的用于集合常量的{...}语法是有意义的,因为集合更像是一个无值的字典的键):

此外,Python最近添加了一些新的数值类型:十进制数(固定精度浮点数)和分数(有一个分子和一个分母的有理数)。它们都用来解决浮点数学的局限性和内在的不精确性:

Python最近还添加了布尔值(预定义的True和False对象实际上是定制后以逻辑结果显示的整数1和0),以及长期以来一直支持的特殊的占位符对象None(它通常用来初始化名字和对象):

如何破坏代码的灵活性

本书稍后将对所有的这些对象进行介绍,但是还有一点值得注意。内置函数type返回的类型对象是赋给该类型的另一个对象的一个对象,其结果在Python 3.0中略有不同,因为类型已经完全和类结合起来了(我们将在本书第五部分的新式类部分中介绍这些)。假设L仍然是前面小节中的那个列表:

除了允许交互地探究对象,这个函数的实际应用是,允许编写代码来检查它所处理的对象的类型。实际上,在Python脚本中至少有3种方法可做到这点:

现在本书已经介绍了所有的类型检验的方法,尽管这样,我们不得不说,就像在本书后边看到的那样,在Python程序中这样做基本上都是错误的(这也是一个有经验的C程序员刚开始使用Python时的一个标志)。在本书后面,当我们开始编写函数这样较大的代码单元的时候,才会澄清其原因,但这是一个(可能是唯一的)核心Python概念。在代码中检验了特定的类型,实际上破坏了它的灵活性,即限制它只能使用一种类型工作。没有这样的检测,代码也许能够使用整个范围的类型工作。

这与前边我们讲到的多态的思想有些关联,它是由Python没有类型声明而发展出来的。

就像你将会学到的那样,在Python中,我们编写对象接口(所支持的操作)而不是类型。不关注于特定的类型意味着代码会自动地适应它们中的很多类型:任何具有兼容接口的对象均能够工作,而不管它是什么对象类型。尽管支持类型检测(即使在一些极少数的情况下,这是必要的),你将会看到它并不是一个“Python式”的思维方法。事实上,你将会发现多态也是使用Python的一个关键思想。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文