深入解析python源码,这部分主要分析python的整体架构及运行原理。
前言
Python 是一门上层语言,创建者通过有意设计来隐藏背后复杂的细节 (builtins)。在解决项目问题时,很多问题也许能通过搜索引擎找到答案, 但 Python 是一门迭代速度非常快的语言,搜索引擎与专业书难以获得实效性好且准确的答案,因此多了解其架构与核心原理,可以更好地理解Python语言的使用方式、提高编程技能和调试能力。
架构
如下图所示

CPython 整体架构大致分为三个模块:
- 代码文件 File Groups
Python 所提供的的大量的模块、库、以及用户自定义的模块。用户还可以通过自定义模块来扩展 Python 系统。
- 解释器 Python Core
又称 Python 虚拟机,对代码分析理解,翻译成字节流,并运行这些字节代码。
Scanner 负责词法分析的工作,将代码一行一行切分为 Token
Parser 则负责语法分析,将 Token 组织为抽象语法树
Compiler 则将语法树转化为指令集合的字节码流
Code Evaluator 也是我们常说 Python 虚拟机,负责执行这些字节码
- 运行环境 Runtime Env
包括运行时的对象、基础类型结构、内存分配器和实时的运行状态信息。
Object 和 Type Structure 分别是程序在运行过程中生成的对象和Python中的自带内建对象,如 Int、Str、List 等
Memory Allocator 则负责申请创建对象需要的内存,本质就是封装了 C 语言里面的 malloc() 内存分配函数
Current State 负责维护运行时的各类状态信息,以便在程序执行过程中如果发生状态变化(正常态和异常态)时,仍然能正常运行
代码结构
这里以python3.11.0版本为例,进行说明代码目录结构
git clone https://github.com/python/cpython.git
cd cpython
git checkout v3.11.0

Doc: rst(reStructuredText)格式官方文档,用其生成https://docs.python.org
Grammar: Python的EBNF(Extended Backus-Naur form)语法定义文件
Include: .h 头文件
Lib .py纯Python实现的标准库
Mac: Mac-specific code,支持MacOS
Modules: C实现的标准库,内含.c .asm.macros .h
Objects: 内置数据类型实现
PC: Windows-specific code,支持Windows
PCbuild: Windows生成文件,for MSVC
Parser: Python语法分析器源码
Programs: main函数文件,用于生成可执行文件,如python.exe的入口文件
Python: CPython解释器源码
Tools: 独立工具代码,that are useful while building or extending Python
总结
这部本探索了python架构工作原理,源码结构。比较深入的还有对象,内存管理设计,后面有时间在继续深入阅读下源码。
参考
- Python源码剖析:深度探索动态语言核心技术
文档信息
- 本文作者:onefeng
- 本文链接:https://me.onefeng.xyz/2023/07/30/python%E6%BA%90%E7%A0%81%E5%89%96%E6%9E%90/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)