第1章 编程语言虚拟机 1
1.1 编程语言的发展 1
1.2 编程语言虚拟机 2
1.3 开发环境 5
第2章 编译流程 6
2.1 Python字节码 6
2.2 词法分析 7
2.3 文法分析 10
2.4 抽象语法树 13
2.4.1 构建AST 14
2.4.2 递归程序的本质 16
2.4.3 访问者模式 21
2.4.4 用Visitor重写AST 29
第3章 二进制文件结构 32
3.1 pyc文件格式 32
3.2 加载CodeObject 34
3.2.1 准备工具 36
3.2.2 创建CodeObject 41
3.3 整理工程结构 47
3.4 执行字节码 49
第4章 实现控制流 55
4.1 分支结构 55
4.1.1 条件判断 56
4.1.2 跳转 59
4.1.3 True、False和None 60
4.2 循环结构 62
4.2.1 变量 62
4.2.2 循环内的跳转 67
第5章 基本的数据类型 75
5.1 Klass-Oop二元结构 75
5.2 整数 78
5.3 字符串 82
第6章 函数和方法 85
6.1 函数 85
6.1.1 栈帧 86
6.1.2 创建FunctionObject 89
6.1.3 调用方法 92
6.2 变量和参数 96
6.2.1 LEGB规则 96
6.2.2 函数的参数 104
6.2.3 参数默认值 107
6.3 Native函数 111
6.4 方法 115
第7章 列表和字典 122
7.1 列表 122
7.1.1 列表的定义 122
7.1.2 操作列表 126
7.2 字典 154
7.2.1 字典的定义 154
7.2.2 操作字典 157
7.3 增强函数功能 165
7.3.1 灵活多变的函数参数 165
7.3.2 闭包和函数修饰器 172
7.4 总结 179
第8章 类和对象 180
8.1 类型对象 180
8.1.1 TypeObject 180
8.1.2 object 185
8.1.3 通过类型创建对象 189
8.2 自定义类型 191
8.3 创建对象 196
8.4 操作符重载 206
8.5 继承 215
第9章 垃圾回收 223
9.1 自动内存管理 223
9.1.1 概念定义 223
9.1.2 引用计数 224
9.1.3 图的知识 226
9.1.4 Tracing GC 231
9.2 复制回收 234
9.2.1 算法描述 234
9.2.2 算法实现 235
9.2.3 建堆 237
9.2.4 在堆中创建对象 243
9.2.5 垃圾回收 247
第10章 模块和库 261
10.1 import语句 261
10.1.1 ModuleObject 262
10.1.2 加载模块 264
10.1.3 from子句 266
10.2 builtin模块 268
10.3 加载动态库 271
10.3.1 定义接口 272
10.3.2 实现math module 277
第11章 迭代 281
11.1 异常 281
11.1.1 finally子句 281
11.1.2 break和continue 287
11.1.3 Exception 291
11.2 自定义迭代器类 306
11.3 Generator 309
11.3.1 yield语句 309
11.3.2 Generator对象 311
11.4 总结 317
附录A Python2字节码表 318
附录B 高级算法 321
B.1 字符串查找 321
B.2 排序算法 325
B.2.1 快速排序 325
B.2.2 选择排序 328
B.2.3 堆排序 329