• CPython设计与实现
21年品牌 40万+商家 超1.5亿件商品

CPython设计与实现

批量上传,套装书可能不全,下单前咨询在线客服!有特殊要求,下单前请咨询客服!

51.77 5.2折 99.8 全新

库存140件

江西南昌
认证卖家担保交易快速发货售后保障

作者[英]安东尼·肖(Anthony Shaw)

出版社人民邮电出版社

ISBN9787115645265

出版时间2024-06

装帧平装

开本16开

定价99.8元

货号29742330

上书时间2024-11-04

思源汇书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
导语摘要
大模型的出现让 AI 技术经历了从量变到质变的过程,而 Python 作为 AI 首选语言,一直默默推动着 AI 技术的快速发展。你是否想过,这是为什么呢?答案就藏在 CPython 中! CPython 是用 C 语言实现的 Python 解释器,它是 Python 的官方实现,并且是使用最广泛的 Python 解释器。其实在谈论 Python 的时候,99% 的情况说的就是 CPython!本书共 16 章,从获取 CPython 源代码开始,手把手带你重新编译

CPython,我们将一起调试代码、升级组件,在这个过程中,你可以详细了解 Python 各类特性的工作原理,成长为一名更棒的Python 程序员。

作者简介
安东尼 · 肖(Anthony Shaw),CPython 项目贡献者,Apache 软件基金会成员。安东尼是一个狂热的 Python 爱好者,擅长理解复杂的系统,然后简化它们,并教给其他人。

译者介绍:

史海,Python 语言组成员,CPython Top100 贡献者,原 OpenStack 社区核心开发者,原华为云计算编程语言 Lab 负责人,目前负责华为云计算 IAAS 软件工程能力建设和优化。

赵羽,华为云计算编程语言 Lab 核心成员,华为公司 Python 编程语言生态建设及开源管理负责人。长期从事 Python 虚拟机的开发及研究工作。

陈啸,华为软件开发工程师。

李俊辰,拥有多年编译器开发经验。

目录
第 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

<

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP