1、第 1 部分 Python 核心第 1 章 欢迎来到 Python 世界 1.1 什么是 Python 1.2 起源 1.3 特点 1.3.1 高级 1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 1.3.5 可移植性 1.3.6 易学 1.3.7 易读 1.3.8 易维护 1.3.9 健壮性 1.3.10 高效的快速原型开发工具 1.3.11 内存管理器 1.3.12 解释性和(字节)编译性 1.4 下载和安装 Python 1.5 运行 Python 1.5.1 命令行上的交互式解释器 1.5.2 从命令行启动脚本 1.5.3 集成开发环境 1.5.4 其他的集成开发环境和执
2、行环境 1.6 Python 文档 1.7 比较 Python(Python 与其他语言的比较) 1.8 其他实现 1.9 练习 第 2 章 快速入门 2.1 程序输出,print 语句及“Hello World!” 2.2 程序输入和 raw_input()内建函数 2.3 注释 2.4 操作符 2.5 变量和赋值 2.6 数字 2.7 字符串 2.8 列表和元组 2.9 字典 2.10 代码块及缩进对齐 2.11 if 语句 2.12 while 循环 2.13 for 循环和 range()内建函数 2.14 列表解析 2.15 文件和内建函数 open()、file() 2.16 错误
3、和异常 2.17 函数 2.17.1 如何定义函数 2.17.2 如何调用函数 2.17.3 默认参数 2.18 类 2.19 模块 2.19.1 如何导入模块 2.19.2 如何访问一个模块函数或访问一个模块变量 2.20 实用的函数 2.21 练习 第 3 章 Python 基础 3.1 语句和语法 3.1.1 注释(#) 3.1.2 继续() 3.1.3 多个语句构成代码组(:) 3.1.4 代码组由不同的缩进分隔 3.1.5 同一行书写多个语句(;) 3.1.6 模块 3.2 变量赋值 3.2.1 赋值操作符 3.2.2 增量赋值 3.2.3 多重赋值 3.2.4 “多元”赋值 3.3
4、 标识符 3.3.1 合法的 Python 标识符 3.3.2 关键字 3.3.3 内建 3.3.4 专用下划线标识符 3.4 基本风格指南 3.4.1 模块结构和布局 3.4.2 在主程序中书写测试代码 3.5 内存管理 3.5.1 变量定义 3.5.2 动态类型 3.5.3 内存分配 3.5.4 引用计数 3.5.5 垃圾收集 3.6 第一个 Python 程序 3.7 相关模块和开发工具 3.8 练习 第 4 章 Python 对象 4.1 Python 对象 4.2 标准类型 4.3 其他内建类型 4.3.1 类型对象和 type 类型对象 4.3.2 None-Python 的 Nu
5、ll 对象 4.4 内部类型 4.4.1 代码对象 4.4.2 帧对象 4.4.3 跟踪记录对象 4.4.4 切片对象 4.4.5 省略对象 4.4.6 XRange 对象 4.5 标准类型操作符 4.5.1 对象值的比较 4.5.2 对象身份比较 4.5.3 布尔类型 4.6 标准类型内建函数 4.6.1 type() 4.6.2 cmp() 4.6.3 str()和 repr()(及操作符) 4.6.4 type()和 isinstance() 4.6.5 Python 类型操作符和内建函数总结 4.7 类型工厂函数 4.8 标准类型的分类 4.8.1 存储模型 4.8.2 更新模型 4.
6、8.3 访问模型 4.9 不支持的类型 4.10 练习 第 5 章 数字 5.1 数字简介 5.1.1 如何创建数值对象并用其赋值(数字对象) 5.1.2 如何更新数字对象 5.1.3 如何删除数字对象 5.2 整型 5.2.1 布尔型 5.2.2 标准整型 5.2.3 长整型 5.2.4 整型和长整型的统一 5.3 双精度浮点型 5.4 复数 5.5 操作符 5.5.1 混合模式操作符 5.5.2 标准类型操作符 5.5.3 算术操作符 5.5.4 *位操作符(只适用于整型) 5.6 内建函数与工厂函数 5.6.1 标准类型函数 5.6.2 数字类型函数 5.6.3 仅用于整型的函数 5.7
7、 其他数字类型 5.7.1 布尔“数” 5.7.2 十进制浮点型 5.8 相关模块 5.9 练习 第 6 章 序列:字符串、列表和元组 6.1 序列 6.1.1 标准类型操作符 6.1.2 序列类型操作符 6.1.3 内建函数(BIF) 6.2 字符串 6.3 字符串和操作符 6.3.1 标准类型操作符 6.3.2 序列操作符切片(和:) 6.4 只适用于字符串的操作符 6.4.1 格式化操作符() 6.4.2 字符串模板: 更简单的替代品 6.4.3 原始字符串操作符(r/R) 6.4.4 Unicode 字符串操作符(u/U) 6.5 内建函数 6.5.1 标准类型函数 6.5.2 序列类
8、型函数 6.5.3 字符串类型函数 6.6 字符串内建函数 6.7 字符串的独特特性 6.7.1 特殊字符串和控制字符 6.7.2 三引号 6.7.3 字符串不变性 6.8 Unicode 6.8.1 术语 6.8.2 什么是 Unicode 6.8.3 怎样使用 Unicode 6.8.4 Codec 是什么 6.8.5 编码解码 6.8.6 把 Unicode 应用到实际应用中 6.8.7 从现实中得来的教训 6.8.8 Python 的 Unicode 支持 6.9 相关模块 6.10 字符串关键点总结6.11 列表 6.12 操作符 6.12.1 标准类型操作符 6.12.2 序列类型
9、操作符 6.12.3 列表类型操作符和列表解析 6.13 内建函数 6.13.1 标准类型函数 6.13.2 序列类型函数 6.13.3 列表类型内建函数 6.14 列表类型的内建函数 6.15 列表的特殊特性 6.16 元组 6.17 元组操作符和内建函数 6.17.1 标准类型操作符、序列类型操作符和内建函数 6.17.2 元组类型操作符和内建函数、内建方法 6.18 元组的特殊特性 6.18.1 不可变性给元组带来了什么影响 6.18.2 元组也不是那么“不可变” 6.18.3 默认集合类型 6.18.4 单元素元组 6.18.5 字典的关键字 6.19 相关模块 6.20 *拷贝 Py
10、thon 对象、浅拷贝和深拷贝 6.21 序列类型小结 6.22 练习 第 7 章 映像和集合类型 7.1 映射类型:字典 7.1.1 如何创建字典和给字典赋值 7.1.2 如何访问字典中的值 7.1.3 如何更新字典 7.1.4 如何删除字典元素和字典 7.2 映射类型操作符 7.2.1 标准类型操作符 7.2.2 映射类型操作符 7.3 映射类型的内建函数和工厂函数 7.3.1 标准类型函数type()、str()和 cmp() 7.3.2 映射类型相关的函数 7.4 映射类型内建方法 7.5 字典的键 7.5.1 不允许一个键对应多个值 7.5.2 键必须是可哈希的 7.6 集合类型 7
11、.6.1 如何创建集合类型和给集合赋值 7.6.2 如何访问集合中的值 7.6.3 如何更新集合 7.6.4 如何删除集合中的成员和集合 7.7 集合类型操作符 7.7.1 标准类型操作符(所有的集合类型) 7.7.2 集合类型操作符(所有的集合类型) 7.7.3 集合类型操作符(仅适用于可变集合) 7.8 内建函数 7.8.1 标准类型函数 7.8.2 集合类型工厂函数 7.9 集合类型内建方法 7.9.1 方法(所有的集合方法) 7.9.2 方法(仅适用于可变集合) 7.9.3 操作符和内建方法比较 7.10 集合类型总结表 7.11 相关模块 7.12 练习 第 8 章 条件和循环 8.
12、1 if 语句 8.1.1 多重条件表达式 8.1.2 单一语句的代码块 8.2 else 语句 8.3 elif(即 else-if)语句 8.4 条件表达式(即“三元操作符”) 8.5 while 语句 8.5.1 一般语法 8.5.2 计数循环 8.5.3 无限循环 8.6 for 语句 8.6.1 一般语法 8.6.2 用于序列类型 8.6.3 用于迭代器类型 8.6.4 range()内建函数 8.6.5 xrange() 内建函数 8.6.6 与序列相关的内建函数 8.7 break 语句 8.8 continue 语句 8.9 pass 语句 8.10 再谈 else 语句 8.
13、11 迭代器和 iter()函数 8.11.1 什么是迭代器 8.11.2 为什么要迭代器 8.11.3 如何迭代 8.11.4 使用迭代器 8.11.5 可变对象和迭代器 8.11.6 如何创建迭代器 8.12 列表解析 8.13 生成器表达式 8.14 相关模块 8.15 练习 第 9 章 文件和输入输出 9.1 文件对象 9.2 文件内建函数(open()和 file() 9.2.1 工厂函数 file() 9.2.2 通用换行符支持(UNS) 9.3 文件内建方法 9.3.1 输入 9.3.2 输出 9.3.3 文件内移动 9.3.4 文件迭代 9.3.5 其他 9.3.6 文件方法杂
14、项 9.4 文件内建属性 9.5 标准文件 9.6 命令行参数 9.7 文件系统 9.8 文件执行 9.9 永久存储模块 9.9.1 pickle 和 marshal 模块 9.9.2 DBM 风格的模块 9.9.3 shelve 模块 9.10 相关模块 9.11 练习 第 10 章 错误和异常 10.1 什么是异常 10.1.1 错误 10.1.2 异常 10.2 Python 中的异常 10.3 检测和处理异常 10.3.1 try-except 语句 10.3.2 包装内建函数 10.3.3 带有多个 except 的 try 语句 10.3.4 处理多个异常的 except 语句 1
15、0.3.5 捕获所有异常 10.3.6 “异常参数” 10.3.7 在应用使用我们封装的函数 10.3.8 else 子句 10.3.9 finally 子句 10.3.10 try-finally 语句 10.3.11 try-except-else-finally:厨房一锅端 10.4 上下文管理 10.4.1 with 语句 10.4.2 *上下文管理协议 10.5 *字符串作为异常 10.6 触发异常 10.7 断言 10.8 标准异常 10.9 *创建异常 10.10 (现在)为什么用异常 10.11 到底为什么要异常 10.12 异常和 sys 模块 10.13 相关模块 10.1
16、4 练习 第 11 章 函数和函数式编程 11.1 什么是函数? 11.1.1 函数 vs 过程 11.1.2 返回值与函数类型 11.2 调用函数 11.2.1 函数操作符 11.2.2 关键字参数11.2.3 默认参数 11.2.4 参数组 11.3 创建函数 11.3.1 def 语句 11.3.2 声明与定义比较 11.3.3 前向引用 11.3.4 函数属性 11.3.5 内部/内嵌函数 11.3.6 *函数(与方法)装饰器 11.4 传递函数 11.5 Formal Arguments 11.5.1 位置参数 11.5.2 默认参数 11.6 可变长度的参数 11.6.1 非关键字
17、可变长参数(元组) 11.6.2 关键字变量参数(字典) 11.6.3 调用带有可变长参数对象函数 11.7 函数式编程 11.7.1 匿名函数与 lambda 11.7.2 内建函数 apply()、filter()、map()、reduce() 11.7.3 偏函数应用 11.8 变量作用域 11.8.1 全局变量与局部变量 11.8.2 globa 语句 11.8.3 作用域的数字 11.8.4 闭包 11.8.5 作用域和 lambda 11.8.6 变量作用域和名称空间 11.9 *递归 11.10 生成器 11.10.1 简单的生成器特性 11.10.2 加强的生成器特性 11.1
18、1 练习 第 12 章 模块 12.1 什么是模块 12.2 模块和文件 12.2.1 模块名称空间 12.2.2 搜索路径和路径搜索 12.3 名称空间 12.3.1 名称空间与变量作用域比较 12.3.2 名称查找、确定作用域、覆盖 12.3.3 无限制的名称空间 12.4 导入模块 12.4.1 import 语句 12.4.2 from-import 语句 12.4.3 多行导入 12.4.4 扩展的 import 语句(as) 12.5 模块导入的特性 12.5.1 载入时执行模块 12.5.2 导入(import)和加载(load) 12.5.3 导入到当前名称空间的名称 12.5
19、.4 被导入到导入者作用域的名字 12.5.5 关于_future_ 12.5.6 警告框架 12.5.7 从 ZIP 文件中导入模块 12.5.8 “新的”导入钩子 12.6 模块内建函数 12.6.1 _import_() 12.6.2 globals()和 locals() 12.6.3 reload() 12.7 包 12.7.1 目录结构 12.7.2 使用 from-import 导入包 12.8 模块的其他特性 12.8.1 自动载入的模块 12.8.2 阻止属性导入 12.8.3 不区分大小的导入 12.8.4 源代码编码 12.8.5 导入循环 12.8.6 模块执行 12.
20、9 相关模块 12.10 练习 第 13 章 面向对象编程 13.1 引言 13.2 面向对象编程 13.2.1 面向对象设计与面向对象编程的关系 13.2.2 现实中的问题 13.2.3 *常用术语 13.3 类 13.3.1 创建类 13.3.2 声明与定义 13.4 类属性 13.4.1 类的数据属性 13.4.2 Methods 13.4.3 决定类的属性 13.4.4 特殊的类属性 13.5 实例 13.5.1 初始化:通过调用类对象来创建实例 13.5.2 _init_()“构造器”方法 13.5.3 _new_()“构造器”方法 13.5.4 _del_()“解构器”方法 13.
21、6 实例属性 13.6.1 “实例化”实例属性(或创建一个更好的构造器) 13.6.2 查看实例属性 13.6.3 特殊的实例属性 13.6.4 建类型属性 13.6.5 实例属性 vs 类属性 13.7 绑定和方法调用 13.7.1 调用绑定方法 13.7.2 调用非绑定方法 13.8 静态方法和类方法 13.8.1 staticmethod()和 classmethod()内建函数 13.8.2 使用函数修饰符 13.9 组合 13.10 子类和派生 13.11 继承 13.11.1 _bases_类属性 13.11.2 通过继承覆盖方法 13.11.3 从标准类型派生 13.11.4 多
22、重继承 13.12 类、实例和其他对象的内建函数 13.12.1 issubclass() 13.12.2 isinstance() 13.12.3 hasattr()、getattr()、setattr()、delattr() 13.12.4 dir() 13.12.5 super() 13.12.6 vars() 13.13 用特殊方法定制类 13.13.1 简单定制(RoundFloat2) 13.13.2 数值定制(Time60) 13.13.3 迭代器(RandSeq 和 AnyIter) 13.13.4 *多类型定制(NumStr) 13.14 私有化 13.15 *授权 13.1
23、5.1 包装 13.15.2 实现授权 13.16 新式类的高级特性(Python 2.2+) 13.16.1 新式类的通用特性 13.16.2 _slots_类属性 13.16.3 _getattribute_()特殊方法 13.16.4 描述符 13.16.5 元类和_metaclass_ 13.17 相关模块和文档 13.18 练习 第 14 章 执行环境 14.1 可调用对象 14.1.1 函数 14.1.2 方法 14.1.3 类 14.1.4 类的实例 14.2 代码对象 14.3 可执行的对象声明和内建函数 14.3.1 callable() 14.3.2 compile() 1
24、4.3.3 eval() 14.3.4 exec 14.3.5 input() 14.3.6 使用 Python 在运行时生成和执行 Python 代码 14.4 执行其他(Python)程序 14.4.1 导入 14.4.2 execfile() 14.4.3 将模块作为脚本执行 14.5 执行其他(非 Python)程序 14.5.1 os.system() 14.5.2 os.popen() 14.5.3 os.fork()、os.exec*()、os.wait*() 14.5.4 os.spawn*() 14.5.5 subprocess 模块 14.5.6 相关函数 14.6 受限执
25、行 14.7 结束执行 14.7.1 sys.exit() and SystemExit 14.7.2 sys.exitfunc() 14.7.3 os._exit() 函数 14.7.4 os.kill() Function 14.8 各种操作系统接口 14.9 相关模块 14.10 练习 第 2 部分 高级主题第 15 章 正则表达式 15.1 引言/动机 15.2 正则表达式使用的特殊符号和字符 15.2.1 用管道符号(|)匹配多个正则表达式模式 15.2.2 匹配任意一个单个的字符(.) 15.2.3 从字符串的开头或结尾或单词边界开始匹配(/$ /b /B ) 15.2.4 创建字
26、符类() 15.2.5 指定范围(-)和否定() 15.2.6 使用闭包操作符(*,+,?,)实现多次出现/重复匹配 15.2.7 特殊字符表示、字符集 15.2.8 用圆括号()组建组 15.3 正则表达式和 Python 语言 15.3.1 re 模块:核心函数和方法 15.3.2 使用 compile()编译正则表达式 15.3.3 匹配对象和 group()、groups()方法15.3.4 用 match()匹配字符串 15.3.5 search()在一个字符串中查找一个模式(搜索与匹配的比较) 15.3.6 匹配多个字符串(|) 15.3.7 匹配任意单个字符(.) 15.3.8
27、创建字符集合() 15.3.9 重复、特殊字符和子组 15.3.10 从字符串的开头或结尾匹配及在单词边界上的匹配 15.3.11 用 findall()找到每个出现的匹配部分 15.3.12 用 sub()(和 subn()进行搜索和替换 15.3.13 用 split()分割(分隔模式) 15.4 正则表达式示例 15.4.1 匹配一个字符串 15.4.2 搜索与匹配的比较,“贪婪”匹配 15.5 练习 第 16 章 网络编程 16.1 引言 16.1.1 什么是客户端/服务器架构 16.1.2 客户端/服务器网络编程 16.2 套接字:通信端点 16.2.1 什么是套接字 16.2.2
28、套接字地址:主机与端口 16.2.3 面向连接与无连接 16.3 Python 中的网络编程 16.3.1 socket()模块函数 16.3.2 套接字对象(内建)方法 16.3.3 创建一个 TCP 服务器 16.3.4 创建 TCP 客户端 16.3.5 运行我们的客户端与 TCP 服务器 16.3.6 创建一个 UDP 服务器 16.3.7 创建一个 UDP 客户端 16.3.8 执行 UDP 服务器和客户端 16.3.9 Socket 模块属性 16.4 *SocketServer 模块 16.4.1 创建一个 SocketServerTCP 服务器 16.4.2 创建 Socket
29、ServerTCP 客户端 16.4.3 执行 TCP 服务器和客户端 16.5 Twisted 框架介绍 16.5.1 创建一个 Twisted Reactor TCP 服务器 16.5.2 创建一个 Twisted Reactor TCP 客户端 16.5.3 执行 TCP 服务器和客户端 16.6 相关模块 16.7 练习 第 17 章 网络客户端编程 17.1 什么是因特网客户端 17.2 文件传输 17.2.1 文件传输网际协议 17.2.2 文件传输协议(FTP) 17.2.3 Python 和 FTP 17.2.4 ftplib.FTP 类方法 17.2.5 交互式 FTP 示例
30、 17.2.6 客户端 FTP 程序举例 17.2.7 FTP 的其他方面 17.3 网络新闻 17.3.1 Usenet 与新闻组 17.3.2 网络新闻传输协议(NNTP) 17.3.3 Python 和 NNTP 17.3.4 nntplib.NNTP 类方法 17.3.5 交互式 NNTP 举例 17.3.6 客户端程序 NNTP 举例 17.3.7 NNTP 的其他方面 17.4 电子邮件 17.4.1 电子邮件系统组件和协议 17.4.2 发送电子邮件 17.4.3 Python 和 SMTP 17.4.4 smtplib.SMTP 类方法 17.4.5 交互式 SMTP 示例 1
31、7.4.6 SMTP 的其他方面 17.4.7 接收电子邮件 17.4.8 POP 和 IMAP 17.4.9 Python 和 POP3 17.4.10 交互式 POP3 举例 17.4.11 poplib.POP3 类方法 17.4.12 客户端程序 SMTP 和 POP3 举例 17.5 相关模块 17.5.1 电子邮件 17.5.2 其他网络协议 17.6 练习 第 18 章 多线程编程 18.1 引言/动机 18.2 线程和进程 18.2.1 什么是进程 18.2.2 什么是线程 18.3 Python、线程和全局解释器锁 18.3.1 全局解释器锁(GIL) 18.3.2 退出线程
32、 18.3.3 在 Python 中使用线程 18.3.4 没有线程支持的情况 18.3.5 Python 的 threading 模块 18.4 thread 模块 18.5 threading 模块 18.5.1 Thread 类 18.5.2 斐波那契、阶乘和累加和 18.5.3 threading 模块中的其他函数 18.5.4 生产者-消费者问题和 Queue 模块 18.6 相关模块 18.7 练习 第 19 章 图形用户界面编程 19.1 简介 19.1.1 什么是 Tcl、Tk 和 Tkinter 19.1.2 安装和使用 Tkinter 53319.1.3 客户端/服务器架构
33、 53419.2 Tkinter 与 Python 编程 53419.2.1 Tkinter 模块:把 Tk 引入你的程序 19.2.2 GUI 程序开发简介 19.2.3 顶层窗口:Tkinter.Tk() 19.2.4 Tk 组件 19.3 Tkinter 举例 19.3.1 标签组件 19.3.2 按钮组件 19.3.3 标签和按钮组件 19.3.4 标签、按钮和进度条组件 19.3.5 偏函数应用举例 19.3.6 中级 Tkinter 范例 19.4 其他 GUI 简介 19.4.1 Tk Interface eXtensions (Tix) 19.4.2 Python MegaWi
34、dgets (PMW) 19.4.3 wxWidgets 和 wxPython 19.4.4 GTK+和 PyGTK 19.5 相关模块和其他 GUI 19.6 练习 第 20 章 Web 编程 20.1 介绍 20.1.1 Web 应用:客户端/服务器计算 20.1.2 因特网 20.2 使用 Python 进行 Web 应用:创建一个简单的 Web 客户端 20.2.1 统一资源定位符 20.2.2 urlparse 模块 20.2.3 urllib 模块 20.2.4 urllib2 模块 20.3 高级 Web 客户端 20.4 CGI:帮助 Web 服务器处理客户端数据 20.4.1
35、 CGI 介绍 20.4.2 CGI 应用程序 20.4.3 cgi 模块 20.5 建立 CGI 应用程序 20.5.1 建立 Web 服务器 20.5.2 建立表单页 20.5.3 生成结果页 20.5.4 生成表单和结果页面 20.5.5 全面交互的 Web 站点 20.6 在 CGI 中使用 Unicode 编码 20.7 高级 CGI 20.7.1 Mulitipart 表单提交和文件的上传 20.7.2 多值字段 20.7.3 cookie 20.7.4 使用高级 CGI 20.8 Web(HTTP)服务器 20.9 相关模块 20.10 练习 第 21 章 数据库编程 21.1
36、介绍 21.1.1 持久存储 21.1.2 基本的数据库操作和 SQL 语言 21.1.3 数据库和 Python 21.2 Python 数据库应用程序程序员接口(DB-API) 21.2.1 模块属性 21.2.2 连接对象 21.2.3 游标对象 21.2.4 类型对象和构造器 21.2.5 关系数据库 21.2.6 数据库和 Python:接口程序 21.2.7 使用数据库接口程序举例 21.3 对象-关系管理器(ORM) 21.3.1 考虑对象,而不是 SQL 21.3.2 Python 和 ORM 21.3.3 雇员数据库举例 21.3.4 总结 21.4 相关模块 21.5 练习
37、 第 22 章 扩展 Python 62322.1 引言/动机 22.1.1 什么是扩展 22.1.2 为什么要扩展 Python 22.2 创建 Python 扩展 22.2.1 创建您的应用程序代码 22.2.2 用样板来包装你的代码 22.2.3 编译 22.2.4 导入和测试 22.2.5 引用计数 22.2.6 线程和全局解释器锁(GIL) 22.3 相关话题 22.4 练习第 23 章 其他话题 23.1 Web 服务 23.2 用 Win32 的 COM 来操作微软 Office 23.2.1 客户端 COM 编程 23.2.2 微软 Excel 23.2.3 微软 Word 第
38、 1 部分 Python 核心23.2.4 微软 PowerPoint 23.2.5 微软 Outlook 23.2.6 中等规模的例子 23.3 用 Jython 写 Python 和 Java 的程序 23.3.1 什么是 Jython 23.3.2 Swing GUI 开发(Java 或者 Python!) 23.4 练习 23.2.4 微软 PowerPoint 23.2.5 微软 Outlook 23.2.6 中等规模的例子 23.3 用 Jython 写 Python 和 Java 的程序 23.3.1 什么是 Jython 23.3.2 Swing GUI 开发(Java 或者 Python!) 23.4 练习