Python 3.4.1 官方教程
中文版
天涯客 排版
2015-01-21
本文档由 L
A
T
E
X 排版系统编辑而成
编辑环境:T
E
XLIVE 2014 + T
E
XMAKER
Python 是一门简单易学、功能强大的编程语言。它具有高效的高级数据结构和简单而有
效的面向对象编程方法。Python 优雅的语法和动态类型、以及其解释性的性质,使它在
许多领域和大多数平台成为脚本编写和快速应用程序开发的理想语言。
从 Python 网站 http://www.python.org/可以免费获得所有主要平台的源代码或二进制
形式的 Python 解释器和广泛的标准库,并且可以自由地分发。网站还包含许多免费的
第三方 Python 模块、程序、工具以及附加文档的发布包和链接。
Python 解释器可以用 C 或 C+ + (或可从 C 中调用的其他语言) 中实现的新的函数和
数据类型轻松扩展。Python 也适合作为可定制应用程序的一种扩展语言。
本教程非正式向读者介绍 Python 语言及其体系的基本概念和功能。随手使用 Python
解释器来亲自动手是很有帮助的,但所有示例都是自包含的,所以本教程也可以离线阅
读。
有关标准对象和模块的说明,请参阅 Python 标准库。Python 语言参考给出了 Python
语言的更正式的定义。要编写 C 或 C+ + 的扩展,请阅读扩展和嵌入 Python 解释器与
Python/C API 参考手册。也有几本书深度地介绍了 Python 。
本教程不会尝试全面并涵盖每一个单独特性,甚至每一个常用的特性。相反,它介
绍了许多 Python 的最值得注意的特点,并会给你一个很好的语言的口味和风格。读完
它之后,你将能够阅读和编写 Python 的模块和程序,并可以准备好更多地了解 Python
标准库中描述的各种 Python 库模块。
词汇表也值得浏览一下。
Contents
1 引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Python 解释器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 用解释器 11
2.1.1 参数传递 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.2 交互模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 解释器及其环境 13
2.2.1 错误处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 可执行的 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 源程序的编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 交互式启动文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.5 自定义模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1 将 Python 当做计算器 15
3.1.1 数字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.2 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 编程第一步 23
4 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1 if 语句 26
4.2 for 语句 27
4.3 The range() 函数 27
4.4 break 和 continue 语句,以及循环中 else 字句 29
4.5 pass 语句 30
4.6 定义函数 30
4.7 更多关于定义函数 32
4.7.1 默认参数值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.7.2 关键字参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7.3 任意参数列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.7.4 参数列表的分拆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.7.5 lambda 表达式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.7.6 文档字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.7.7 函数注释 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.8 插曲:编码风格 38
5 数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.1 深入列表 40
5.1.1 将列表作为堆栈使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.2 将列表当作队列使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.3 列表解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.4 嵌套的列表解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 del 语句 45
5.3 和序列 46
5.4 集合 47
5.5 字典 48
5.6 的 50
5.7 深入条件控制 51
5.8 序列和其类的 52
6 模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.1 深入模块 54
6.1.1 执行模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.1.2 模块搜索路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.1.3 " 编译过的" Python 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2 模块 56
6.3 dir() 函数 57
6.4 包 59
6.4.1 从包中导入 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4.2 包内引用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4.3 包含多个目录的包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7 输入和输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.1 格式化输出 63
7.1.1 旧式的字符串格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.2 读写文件 67
7.2.1 文件对象的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.2.2 使用 json 存储结构化数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8 错误和异常 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.1 语法错误 71
8.2 异常 71
8.3 抛出异常 72
8.4 引发异常 75
8.5 用定义的异常 75
8.6 定义清理操作 77
8.7 清理操作的定义 78
9 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
9.1 名和对象 79
9.2 Python 作用域和命名空间 80
9.2.1 作用域和命名空间示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.3 初识类 82
9.3.1 类定义语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.3.2 类对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.3.3 实例对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.3.4 方法对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.3.5 类和实例变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85