今天打算开一个新的系列,本系列将和大家一起对Python的源码进行分析,有参考陈儒的《Python 源码剖析》(强烈推荐这本书),做到知其然知其所以然。
总体架构
首先我们先从总体结构看一下Python源码的整体架构:
大致分为三个模块
- 代码文件
File Groups
- python所提供的的大量的模块、库、以及用户自定义的模块。用户还可以通过自定义模块来扩展python系统。 - 解释器
Python Core
- 又称Python虚拟机,对代码分析理解,翻译成字节流,并运行这些字节代码。Scanner
负责词法分析的工作,将代码一行一行切分为 tokenParser
则负责语法分析,将 Token 组织为抽象语法树Compiler
则将语法树转化为指令集合的字节码流,最后由Code Evaluator
来执行这些字节码。
- 运行环境
Runtime Env
- 包括运行时的对象、基础类型结构、内存分配器和实时的运行状态信息。Object
和Type Structure
分别是程序在运行过程中生成的对象和Python中的自带内建对象,如int、List、dict等。Memory Allocator
则负责申请创建对象需要的内存,本质就是封装了 C 语言里面的mal