在最高的层次上,Python 的整体架构可以分为四个主要的部分,整个架构如
图 1 所示。在左边,是 Python 提供的大量的模块,库以及用户自定义的模块。
比如在执行 import os 时,这个 os 就是 Python 内建的模块,当然用户还可以通
过自定义模块来扩展 Python 系统。在本系列文章中,我们不会对这一部分进行
过多的考察。
在图的右边,是 Python 的运行时环境,包括对象/类型系统(Object/Type
structures),内存分配器(Memory Allocator)和运行时状态(Current State
of Python)。运行时状态维护了解释器在执行字节码时在不同的状态之间切换
的动作,我们可以将它视为一个巨大而复杂的有穷状态机。内存分配器则全权负
责 Python 中创建对象时对内存的申请工作,实际上它就是 Python 运行时与 C
中 malloc 的一层接口。而对象/类型系统则包含了 Python 中存在的各种内建对
象,比如整数,list 和 dict 等等
在中间的部分,可以看到 Python 的核心,解释器(interpreter)。在解释
器中,箭头的方向指示了 Python 运行时的数据流方向。其中 Scanner 对应词法
分析,将文件输入的 Python 源代码或从命令行输入的一行行 Python 代码切分为
一个一个的 token;Parser 对应语法分析部分,在 Scanner 的分析结果上进行语
法分析,建立抽象语法树(AST);Compiler 是根据建立的 AST 生成指令集合—
—Python 字节码(byte code),就像 Java 编译器和 C#编译器所做的那样;最
后由 Code Evaluator 来解释并执行这些字节码。因此,Code Evaluator 又可以
被称为执行引擎。