python源码分析(一)整体架构

2023/07/30 python 共 1308 字,约 4 分钟

深入解析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源码剖析:深度探索动态语言核心技术

文档信息

搜索

    内容