开始看 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。
参考这本书的顺序的结构慢慢来吧。
- 内建对象
- PyObject
- PyIntObject
- PyStringObject
- PyListObject
- PyDictObject
- Small Python 项目
- 虚拟机
- Code 对象与 pyc 文件
- 虚拟机框架
- 一般表达式
- 控制流
- 函数机制
- 类机制
- 运行环境初始化
- 模块动态加载机制
- 多线程
- 内存管理
根据网上找到的一些信息,说赖永浩在写新版,不过没有下文,据说是工作太忙。
另外在 GitHub 上找到一个项目:flaggo/python3-source-code-analysis,写了个开头,可以参考参考。
环境
以书籍对应的 Python 2.5 以及当前最新版本 Python 3.9.5 (0a7dcbdb13
) 为参考。
本地环境就是 Ubuntu 21.04,GCC 10.3.0。