目录
4. 介绍Python对象类型
4.1 为什么使用内置类型
4.2 数字
4.3 字符串
4.4 列表
4.5 字典
4.6 元组
4.7 文件
4.8 其他核心类型
5. 数字
5.1 Python得数字类型
5.2 在实际应用中的数字
5.3 其他数字类型
5.4 数字扩展
6. 动态类型简介
6.1 缺少类型声明语句得情况
6.2 共享引用
6.3 动态类型随处可见
7. 字符串
7.1 字符串常量
7.2 实际应用中的字符串
7.3 字符串方法
7.4 字符串格式化表达式
7.5 字符串格式化调用方法
7.6 通常意义下的类型分类
8. 列表与字典
8.1 列表
8.2 字典
8.3 实际应用中的字典
9. 元组、文件及其他
9.1 元组
9.2 文件
9.3 重访类型分类
9.4 对象灵活性
9.5 引用 VS 拷贝
9.6 比较、相等性和真值
9.7 Python中得其他类型
9.8 总结
4. 介绍Python对象类型
数据以对象的形式出现,无论是Python提供的内置对象,还是使用Python或是C扩展库这样的扩展语言工具创建的对象。对象无非就是内存中的一部分,包含数值和相关操作的集合。它也是Python中最基本的概念,这一章全面介绍Python的内置对象类型。
Python程序可以分解成模块、语句、表达式以及对象:
1. 程序由模块构成。
2. 模块包含语句。
3. 语句包含表达式。
4. 表达式建立并处理对象。
第三章对模块的讨论介绍了这个等级层次中的最高一层。本章将从底层开始,探索编程过程中使用的内置对象以及表达式。
4.1 为什么使用内置类型
学过底层语言C++/C的都知道,很大一部分工作集中于用对象(数据结构)去表现应用领域的组件。部署内存结构、管理内存分配、实现搜索和读取例程等。这些工作复杂且易错。原著作者说这背离程序真正目标,我觉得有点过于为了抬高Python贬低其他语言。至于为什么,有长时间使用C/ C++/ Java工作经历的人都会这么觉得。任何一个真正优秀的程序,这些问题都是必不可少的,因此才有不断地优化和迭代。
在Python程序中,这些问题大部分都消失了。只因为Python提供了对象类型作为语言的组成部分,在开始解决问题之前没有必要编写对象的实现。除非有内置类型无法提供的特殊对象要处理,最好总是使用内置对象而不是使用自己的实现。原因如下:
1. 内置对象让程序更易编写。简单的任务使用内置类型足够了,它也能够完成很多复杂任务工作。
2. 内置对象是拓展的组件。对于一些仍需要提供自己对象的复杂任务,使用Python的类或者C语言的接口。人工实现的对象往往建立在列表和字典这样的内置类型的基础之上。例如,堆栈数据结构也许会实现为管理和定制内置列表的类。
3. 内置对象往往比定制的数据结构更有效率。在速度方面,Python的内置类型优化了用C实现的数据结构算法。作者表示你可以自己实现类似的数据类型,但是性能水平和内置数据类型不是一个Level。
4. 内置对象是语言的标准的一部分。从某种程度上说,Python不止借鉴了依靠内置工具的语言(如LISP),还汲取了C++这种语言的优点。你可以实现独有的对象类型,但是没必要。
| 对象类型 | 列子 常量/创建 |
|---|---|
| 数字 | 1234,3.1415,3+4j,Decimal,Fraction |
| 字符串 | ' spam '," guido ' s ", b ' axolc ' |
| 列表 | [1,[2,' three ' ],4] |
| 字典 | { ' food ' : ' spam ',' taste ' : ' yum ' } |
| 元组 | ( 1,' spam ',4,' U ' ) |
| 文件 | myfile = open( ' eggs ',' r ' ) |
| 集合 | set( ' abc ' ),{ ' a ',' b ',' c ' } |
| 其他类型 | 类型、None、布尔型 |
| 编程单元类型 | 函数、模块、类 |
| 与实现相关的类型 | 编译的代码堆栈跟踪 |
上表是Python的内置类型对象和一些编写其常量所用到的语法。比如,数字和字符串分别表示数字和文本的值,而文件则提供了处理计算机上文件的接口。表中的内容其实并不完整,因为在Python程序中处理的每样东西都是一种对象。



