Python的核心对象类型

未匹配的标注

表4-1 预览了Python内置对象类型和一些语法,用来编码它们字面量[12](也就是,产生这些对象的表达式)。如果已经使用过其他语言,这些类型中的一些很可能看起来很熟悉;比如,数字和字符串分别代表了数字的和文本的值,文件对象提供了处理存储在电脑上的真实文件的接口。

然而,对一些读者来说,表4-1中的对象类型可能比习惯的更一般和强大。比如,单是列表和字典就已经是强大的数据展示工具了,它们让你在低层次语言中用来支持集合和搜索的大多数工作变得没有必要。简而言之,列表提供了其他对象的有序集合,而字典则按键存储对象;列表和字典都可以嵌套,能按需增大和缩小,还可以包含任何类型的对象。

image-20230108120251551

在表4-1中还显示了,程序单元如函数、模块,和类——在本书后面部分学习——也是Python中的对象;它们通过语句和表达式如 defclass, importlambda 来创建,并且可以被自由地在脚本之间传递,存储在其他对象中等等。Python还提供了一套实现相关的类型如编译代码对象,它们一般更适用于工具建造者而不是应用开发者;后面部分将探索这些内容,虽然由于其特殊性不会太深入。

尽管标题上写了是类型预览,但表4-1并不是真正完整的,因为在Python程序中处理的每种东西都是一种对象。比如,当在Python中执行文本模式匹配时,就创建了模式对象,当执行网络脚本程序时,就使用了socket对象。这些其他类型的对象通常被导入和使用库模块中的函数来创建——比如,在用于模式和socket的 resocket模块中——且有它们自己的行为。

然而,通常将表4-1中的其他对象类型称为核心数据类型,因为它们被有效地构建到Python语言中——也就是说,有专用表达式语法来产生它们中大多数。比如,当运行下面的被引号包裹字符的代码时:

>>> 'spam'

技术上讲正在运行一个字面量表达式,它产生并返回了一个新的字符串对象。有专用的Python语言语法来产生这个对象。类似地,被方括号包裹的表达式创建列表,被大括号包裹的产生*字典等等。尽管如此,将看到:Python中没有类型声明,运行的表达式的语法确定了创建和使用的对象类型。事实上,像表4-1中的那些对象创建语法通常是Python语言中类型的起源。

同样重要地,一旦创建了一个对象,就将一直绑定了它的操作集——可以在字符串上只执行字符串操作,在列表上执行列表操作。正式地说,这意味着Python是动态类型的(一个自动跟踪类型而不要求声明代码的模式),但它也是强类型的(一个只能在一个对象上执行对它类型有效的操作)。

随后章节将详细研究在表4-1中的每一个对象类型。然而,在深入细节前,在实践中开始快速看一下Python的核心对象。本章的剩余部分提供了随后章节中将深入探索操作的预览。不要期望在这里找到完整的故事——本章的目标只是激起兴趣并引入一些关键的概念。尽管如此,开始的最好方式就是开始行动,所以尽快开始编写一些真实代码吧。


[12]: 在本书中,术语字面量 仅仅是指其语法产生对象的表达式——有时也称作常量。注意这个术语“常量”并不是暗示不能被改变的对象或常量(也就是说,这个术语和C++的const或Python的“immutable”——一个在不可变性章节探索的主题——无关)

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

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


暂无话题~