TOC

Python 源码学习 01: 初步了解

开始看 Python 源码,啃一啃这块硬骨头,在学习 Python 底层的同时,也可以提升自己的 C 语言能力。

目录结构

大致浏览一下代码结构。

  • build 构建工具(脚本之类)
  • Doc 项目文档
  • Grammar 语法文件(EBNF)
  • Include 头文件
  • Lib 标准库
  • Mac Mac 平台相关
  • Misc 杂项
  • Modules C 模块
  • Objects 类型
  • Parser 解释器
  • PC Windows 平台相关
  • PCbuild Visual Studio 相关
  • Programs 可执行文件相关
  • Python 核心代码
  • Tools 项目工具

代码结构

编译

学习过程中可能会改改编译一下,看看效果。

mkdir debug
cd debug
../configure --with-pydebug
make
make test

学习顺序

我所知道的,评价比较好的,参考资料,只有 08 年参考 Python 2.5 写的《Python 源码剖析》,在豆瓣上有电子书,需要付费阅读。

当前Python的最新发布版本是2.5.2,在本书中,我们剖析的对象是2006年12月19日正式发布的Python 2.5。

参考这本书的顺序的结构慢慢来吧。

  1. 内建对象
  2. PyObject
  3. PyIntObject
  4. PyStringObject
  5. PyListObject
  6. PyDictObject
  7. Small Python 项目
  8. 虚拟机
  9. Code 对象与 pyc 文件
  10. 虚拟机框架
  11. 一般表达式
  12. 控制流
  13. 函数机制
  14. 类机制
  15. 运行环境初始化
  16. 模块动态加载机制
  17. 多线程
  18. 内存管理

根据网上找到的一些信息,说赖永浩在写新版,不过没有下文,据说是工作太忙。

另外在 GitHub 上找到一个项目:flaggo/python3-source-code-analysis,写了个开头,可以参考参考。

环境

以书籍对应的 Python 2.5 以及当前最新版本 Python 3.9.5 (0a7dcbdb13) 为参考。

本地环境就是 Ubuntu 21.04,GCC 10.3.0。

参考资料与拓展阅读