Python源码结构简介

开始研究 Python 内部实现前,我们需要先获得一份源码。

Python 除了官网提供的 C 语言实现,还有其他杂七杂八的实现。例如, Jython基于 Java 实现,可直接调用 Java 类库。

本专栏介绍官方 CPython 的实现,后续讨论如无特别说明,均针对 CPython

Python 官网 ,我们可以下载最新的 Python 解释器,也可以下载到最新的源码。Python 解释器是源码的编译结果——对源码进行编译,可以得到 Python 解释器程序。

在官网 源码下载 页面,我们可以找到所有 Python 版本的源码。专栏撰写时,Python 3 已经是主流版本。因此,我们选用最新的稳定版本 3.7.4 作为研究对象。

进入 Python 3.7.4 下载页面:https://www.python.org/downloads/release/python-374/ ,我们可以看到一个这样的下载列表:

../../_images/75808480f1f29e94dc8b38b928ee6fda.png

这个列表前两个是 Python 源码,分别是 gz 以及 xz 格式。选择其中一个下载并解压缩,我们就得到一份完整的 Python 源码。

1
2
$ wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
$ tar -xf Python-3.7.4.tgz

进入源码目录,我们可以看到大致这样的目录结构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ cd Python-3.7.4
$ tree -L 1
.
├── CODE_OF_CONDUCT.rst
├── Doc
├── Grammar
├── Include
├── LICENSE
├── Lib
├── Mac
├── Makefile.pre.in
├── Misc
├── Modules
├── Objects
├── PC
├── PCbuild
├── Parser
├── Programs
├── Python
├── README.rst
├── Tools
├── aclocal.m4
├── config.guess
├── config.sub
├── configure
├── configure.ac
├── install-sh
├── m4
├── pyconfig.h.in
└── setup.py

接下来,我们快速浏览几个重要的子目录:

  • Doc ,文档相关;
  • Grammar ,语法规则;
  • Include ,头文件;
  • Lib ,标准库;
  • Parser ,语法分析相关;
  • Python ,虚拟机执行相关;
  • Objects ,内建对象实现;

专栏重点介绍 Python 内建对象 设计思路,以及 虚拟机 执行过程,包括 函数机制 、以及 类机制 。基于这个目标,我们将重点研究 IncludePython 以及 Objects 目录中的源码。

现在,请自备源码,我们一起踏上新征程!

到底如何才能提升我的 Python 开发水平,向更高一级的岗位迈进呢? 如果你有这些问题或者疑惑,请订阅我们的专栏 Python源码深度剖析 ,阅读更多章节:

【Python源码剖析】系列文章首发于公众号【小菜学编程】,敬请关注: