图书盲袋,以书为“药”
欢迎光临中图网 请 | 注册

CPYTHON设计与实现

出版社:人民邮电出版社出版时间:2024-06-01
开本: 16开 页数: 260
中 图 价:¥74.9(7.5折) 定价  ¥99.8 登录后可看到会员价
加入购物车 收藏
运费6元,满39元免运费
?新疆、西藏除外
本类五星书更多>

CPYTHON设计与实现 版权信息

CPYTHON设计与实现 本书特色

Python 之父 Guido van Rossum 推荐,CPython 核心开发者 Carol Willing 作序。

以平易近人的方式解释 Python 解释器的概念、思想和技术细节,手把手带你重新编译CPython,了解Python的内部实现。

CPython 即用C语言实现的 Python 解释器,是目前使用广泛的 Python 解释器,GitHub Star数近 50k。

不了解 Python 的人可能不知道,当我们谈论 Python 的时候,99% 的情况其实说的就是 CPython。

CPYTHON设计与实现 内容简介

大模型的出现让 AI 技术经历了从量变到质变的过程,而 Python 作为 AI 优选语言,一直默默推动着 AI 技术的快速发展。你是否想过,这是为什么呢?答案就藏在 CPython 中! CPython 是用 C 语言实现的 Python 解释器,它是 Python 的官方实现,并且是使用*广泛的 Python 解释器。其实在谈论 Python 的时候,99% 的情况说的就是 CPython!本书共 16 章,从获取 CPython 源代码开始,手把手带你重新编译 CPython,我们将一起调试代码、升级组件,在这个过程中,你可以详细了解 Python 各类特性的工作原理,成长为一名更棒的Python 程序员。

CPYTHON设计与实现 目录

第 1章 获取 CPython 源代码 1

第 2章 准备开发环境 3

2.1 使用 IDE或代码编辑器 3

2.2 安装 Visual Studio 4

2.3 安装 Visual Studio Code 6

2.3.1 安装 6

2.3.2 本书中的推荐扩展程序 6

2.3.3 使用高级代码导航和扩展 7

2.3.4 配置任务和启动文件 8

2.4 安装 JetBrains CLion 9

2.5 安装 Vim 12

2.6 小结 15

第3章 编译 CPython 16

3.1 在 macOS 系统上编译 CPython 16

3.2 在 Linux 系统上编译 CPython 18

3.3 安装自定义版本 19

3.4 make 快速入门 20

3.5 CPython 的 make 目标 21

3.5.1 构建目标 21

3.5.2 测试目标 21

3.5.3 清理目标 22

3.5.4 安装目标 22

3.5.5 其他目标 23

3.6 在 Windows 系统上编译 CPython 23

3.6.1 安装依赖项 24

3.6.2 从命令行编译 24

3.6.3 使用 Visual Studio 编译 25

3.7 PGO 28

3.8 小结 29

第4章 Python 语言和语法 30

4.1 为什么 CPython 是用 C 语言

而不是 Python 语言实现的 30

4.2 Python 语言规范 32

4.2.1 语言说明文档 32

4.2.2 语法文件 33

4.3 解析器生成器 35

4.4 重新生成语法 36

4.5 小结 39

第5章 配置和输入 41

5.1 配置状态 42

5.1.1 预初始化配置 43

5.1.2 相关源文件 43

5.1.3 运行时配置数据结构 44

5.1.4 通过命令行来设置运行时

配置 44

5.1.5 查看运行时标志 45

5.2 构建配置 45

5.3 从输入构建模块 46

5.3.1 相关的源文件 46

5.3.2 读取文件和输入 47

5.3.3 从命令行输入字符串 47

5.3.4 通过本地模块输入 48

5.3.5 来自脚本文件或标准输入的输入 49

5.3.6 从编译好的字节码输入 49

5.4 小结 50

第6章 基于语法树的词法分析和

语法解析 51

6.1 具象语法树生成器 52

6.2 CPython 解析器-分词器 54

6.2.1 相关源文件 54

6.2.2 从文件向解析器中输入数据 54

6.2.3 解析器-分词器工作流 55

6.3 抽象语法树 58

6.3.1 相关源文件 59

6.3.2 使用 instaviz 工具展示

抽象语法树 59

6.3.3 编译抽象语法树 62

6.4 要记住的术语 65

6.5 示例:添加一个约等于运算符 65

6.6 小结 69

第7章 编译器 70

7.1 相关源文件 71

7.2 重要的专业术语 71

7.3 实例化一个编译器 72

7.4 未来标志和编译器标志 73

7.4.1 未来标志 73

7.4.2 在 Python 3.9 中引用未来

标志 73

7.4.3 编译器标志 74

7.5 符号表 74

7.5.1 相关源文件 74

7.5.2 符号表数据结构 75

7.5.3 使用 symtable 标准库模块 75

7.5.4 符号表实现 77

7.6 核心编译过程 79

7.6.1 从 Python 访问编译器 79

7.6.2 编译器 C 语言API 80

7.6.3 指令 82

7.6.4 基础帧块 83

7.6.5 操作和参数 83

7.7 汇编 84

7.7.1 汇编器数据结构 84

7.7.2 汇编器深度优先搜索算法 84

7.7.3 汇编器 C 语言API 85

7.7.4 深度优先搜索 86

7.8 创建一个代码对象 87

7.9 使用 instaviz 展示代码对象 88

7.10 示例:实现约等于运算符 89

7.11 小结 94

第8章 求值循环 95

8.1 相关源文件 96

8.2 重要术语 96

8.3 构建线程状态 96

8.3.1 线程状态类型 96

8.3.2 相关源文件 97

8.4 构建帧对象 97

8.4.1 帧对象类型 97

8.4.2 相关源文件 98

8.4.3 帧对象初始化 API 98

8.5 帧的执行 102

8.6 值栈 105

8.6.1 字节码操作的例子:BINARY_OR 105

8.6.2 模拟值栈 106

8.6.3 栈效果 109

8.7 示例:在列表中添加元素 109

8.8 小结 112

第9章 内存管理 114

9.1 C 语言中的内存分配 114

9.1.1 静态内存分配 115

9.1.2 自动内存分配 115

9.1.3 动态内存分配 116

9.2 Python 内存管理系统设计 117

9.2.1 内存分配域 117

9.2.2 内存分配器 118

9.3 CPython 内存分配器 118

9.3.1 相关源文件 120

9.3.2 重要术语 120

9.3.3 内存块、内存池和堆区 120

9.3.4 内存块分配 API 125

9.3.5 使用 Python调试API 126

9.4 对象和 PyMem 内存分配域 126

9.5 原始内存分配域 129

9.6 自定义内存分配器 129

9.7 自定义的内存分配“消毒剂” 130

9.7.1 AddressSanitizer 130

9.7.2 MemorySanitizer 131

9.7.3 UndefinedBehaviorSanitizer 131

9.8 PyArena 内存堆区 132

9.9 引用计数 133

9.9.1 在 Python 中创建变量 133

9.9.2 增加引用 133

9.9.3 减少引用 134

9.9.4 字节码操作中的引用计数 135

9.9.5 CPython 引用计数的优点 137

9.10 垃圾回收 137

9.10.1 相关源文件 138

9.10.2 垃圾回收器的设计 138

9.10.3 垃圾回收器管理的容器

类型 139

9.10.4 不可追踪对象与可变性 140

9.10.5 垃圾回收算法 140

9.10.6 分代垃圾回收 143

9.10.7 使用 Python 的垃圾回收

API 144

9.11 小结 145

第 10章 并行和并发 146

10.1 并行模型和并发模型 147

10.2 进程的结构 148

10.3 多进程并行 149

10.3.1 在 POSIX 中fork 进程 149

10.3.2 Windows 系统上的

多进程 152

10.3.3 multiprocessing 包 152

10.3.4 相关源文件 152

10.3.5 spawn 进程和 fork 进程 152

10.3.6 使用队列和管道交换

数据 158

10.3.7 进程之间的共享状态 165

10.3.8 示例应用程序 165

10.3.9 多进程总结 167

10.4 多线程 167

10.4.1 全局解释器锁 168

10.4.2 相关源文件 169

10.4.3 在 Python 中启动线程 169

10.4.4 线程状态 172

10.4.5 POSIX 线程 176

10.4.6 Windows 线程 176

10.4.7 多线程总结 177

10.5 异步编程 177

10.6 生成器 177

10.6.1 生成器结构 178

10.6.2 相关源文件 179

10.6.3 创建生成器 179

10.6.4 执行生成器 181

10.7 协程 182

10.7.1 相关源文件 184

10.7.2 事件循环 184

10.7.3 示例 185

10.8 异步生成器 186

10.9 子解释器 187

10.9.1 相关源文件 189

10.9.2 示例 189

10.10 小结 190

第 11章 对象和类型 191

11.1 本章示例 192

11.2 内置类型 192

11.3 对象类型和可变长度对象类型 193

11.4 type类型 194

11.4.1 类型槽 195

11.4.2 在 C 语言中使用类型 196

11.4.3 类型属性字典 196

11.5 bool 类型和 long 类型 197

11.5.1 long类型 198

11.5.2 示例 199

11.6 Unicode 字符串类型 200

11.6.1 相关源文件 201

11.6.2 处理 Unicode 码点 202

11.6.3 UTF-8和UTF-16 202

11.6.4 宽字符类型 203

11.6.5 字节顺序标记 204

11.6.6 encodings 包 204

11.6.7 编解码器模块 205

11.6.8 编解码器的实现 205

11.6.9 内部的编解码器 206

11.6.10 示例 207

11.7 字典类型 208

11.7.1 哈希 208

11.7.2 相关源文件 210

11.7.3 字典结构 210

11.7.4 查找 211

11.8 小结 212

第 12章 标准库 213

12.1 Python 模块 213

12.2 Python 模块和 C 语言模块 214

第 13章 测试套件 217

13.1 在 Windows 系统上运行测试

套件 217

13.2 在 Linux 系统或 macOS 系统上

运行测试套件 217

13.3 测试标志 218

13.4 运行特定测试 218

13.5 测试模块 220

13.6 测试工具 220

13.7 小结 221

第 14章 调试 222

14.1 使用崩溃处理程序 222

14.2 编译调试的支持 223

14.2.1 Windows系统 223

14.2.2 macOS 系统或 Linux

系统 223

14.3 在 macOS 系统上使用LLDB 223

14.3.1 创建断点 224

14.3.2 启动 CPython 224

14.3.3 附加到正在运行的 CPython 解释器中 224

14.3.4 处理断点 225

14.3.5 使用 cpython_lldb 扩展 226

14.4 使用 GDB 227

14.4.1 创建断点 227

14.4.2 启动 CPython 227

14.4.3 附加到正在运行的 CPython 解释器中 227

14.4.4 处理断点 228

14.4.5 使用 python-gdb 扩展 228

14.5 使用 Visual Studio 调试器 228

14.5.1 添加断点 229

14.5.2 启动调试器 229

14.5.3 处理断点 230

14.6 使用 CLion 调试器 231

14.6.1 调试 make 应用程序 232

14.6.2 附加调试器 232

14.6.3 创建断点 232

14.6.4 处理断点 234

14.7 小结 235

第 15章 基准测试、性能分析和追踪 236

15.1 使用 timeit 进行微基准测试 237

15.2 使用 Python 基准测试套件进行

运行时基准测试 238

15.2.1 执行基准测试 240

15.2.2 对比基准测试 240

15.3 使用 cProfile 分析 Python 代码 242

15.4 使用 DTrace 分析 C 语言代码 245

15.4.1 相关源文件 245

15.4.2 安装 DTrace 246

15.4.3 编译 DTrace 支持 246

15.4.4 使用 CLion 中的 DTrace 246

15.4.5 DTrace 示例 247

15.5 小结 248

第 16章 下一步计划 249

16.1 为 CPython 编写 C 语言扩展

模块 249

16.2 改进 Python 应用程序 249

16.3 为 CPython 项目做贡献 250

16.3.1 问题分类 250

16.3.2 创建一个拉取请求来修复问题 251

16.3.3 其他贡献 252

16.4 继续学习 252

附录A 面向Python程序员的 C 语言

简介 253
展开全部

CPYTHON设计与实现 相关资料

“我把这本书推荐给所有想要开始学习 CPython 的人。”

——Guido van Rossum,Python 之父



“这本书将带你踏上探索主流编程语言 Python 的旅程,指导你了解 CPython 内部的运作原理,并让你一睹核心开发人员是如何精心制作语言的。我相信,读完这本书,不仅你的技能会增长,而且你将能够解决更复杂的问题,从而改善我们的世界。”

——Carol Willing,CPython 核心开发者,CPython 指导委员会成员



“这本书将带你探秘 Python

CPYTHON设计与实现 作者简介

安东尼 · 肖(Anthony Shaw),CPython 项目贡献者,Apache 软件基金会成员。安东尼是一个狂热的 Python 爱好者,擅长理解复杂的系统,然后简化它们,并教给其他人。译者介绍:史海,Python 语言组成员,CPython Top100 贡献者,原 OpenStack 社区核心开发者,原华为云计算编程语言 Lab 负责人,目前负责华为云计算 IAAS 软件工程能力建设和优化。赵羽,华为云计算编程语言 Lab 核心成员,华为公司 Python 编程语言生态建设及开源管理负责人。长期从事 Python 虚拟机的开发及研究工作。陈啸,华为软件开发工程师。李俊辰,拥有多年编译器开发经验。

商品评论(0条)
暂无评论……
书友推荐
本类畅销
编辑推荐
返回顶部
中图网
在线客服