讲解基于CPython,因为其最流行,是事实上的标准。
Python和CPython在本文中可以互换,CPython是Python的C语言实现。
Python程序的执行分为3个阶段:
1. 初始化:设置不同的数据结构,只有在非交互模式下才会进行。
2. 编译:解析源代码,构建语法树,创建抽象语法树,构建符号表,生成代码对象。
3. 解释:在某些上下文中实际执行代码对象。
解析源代码构建抽象语法树基本上是语言独立的,多数语言都差不多。而从抽象语法树到符号表和代码对象就有趣多了。所以本文主要覆盖如何创建符号表,创建代码对象,python对象,帧对象,代码对象,函数对象,python操作码,解释器循环,生成器和用户定义类。
本文要求读者熟悉python和C语言,并且渴望了解CPython虚拟机。
本文讲解使用的是Python 3