Python进阶编程:编写更高效、优雅的Python代码
上QQ阅读APP看书,第一时间看更新

0.1 Python总体架构

Python的整体架构主要分为3个部分,如图0-1所示。

图0-1 Python总体架构

图0-1的左边是Python提供的大量模块、库以及用户自定义的模块。比如在执行import os时,这个os就是Python内置的模块。当然,用户还可以通过定义模块来扩展Python系统。

图0-1的右边是Python的运行时环境,包括对象/类型系统(Object/Type Structures)、内存分配器(Memory Allocator)和运行时状态信息(Current State of Python)。运行时状态维护了解释器在执行字节码时不同状态(比如,正常状态和异常状态)之间切换的动作,我们可以将它视为一个巨大而复杂的有穷状态机。内存分配器则全权负责Python中创建对象、内存的申请工作。实际上,它就是Python运行时与C中malloc的一层接口。而对象/类型系统则包含Python中存在的各种内置对象,比如整数、list和dict,以及各种用户自定义的类型和对象。

图0-1的中间部分是Python的核心——解释器(Interpreter),或者称为虚拟机。在解释器中,箭头的方向指示了Python运行过程中的数据流方向。其中,Scanner对应词法分析——将文件输入的Python源码或从命令行输入的Python源码切分为一个个token;Parser对应语法分析——在Scanner的分析结果上进行语法分析,建立抽象语法树(AST);Compiler根据建立的AST生成指令集合——Python字节码(Bytecode),就像Java编译器和C#编译器所做的那样;Code Evaluator执行这些字节码,因此又被称为虚拟机。

图0-1中,解释器与右边的对象/类型系统、内存分配器之间的箭头表示使用关系;而与运行时状态之间的箭头表示修改关系,即Python在执行的过程中会不断地修改当前解释器所处的状态,在不同的状态之间切换。