0


Python源码解读之零 Python源码整体架构

今天打算开一个新的系列,本系列将和大家一起对Python的源码进行分析,有参考陈儒的《Python 源码剖析》(强烈推荐这本书),做到知其然知其所以然。

总体架构

首先我们先从总体结构看一下Python源码的整体架构:

Imgur

大致分为三个模块

  • 代码文件 File Groups - python所提供的的大量的模块、库、以及用户自定义的模块。用户还可以通过自定义模块来扩展python系统。
  • 解释器 Python Core- 又称Python虚拟机,对代码分析理解,翻译成字节流,并运行这些字节代码。 - Scanner 负责词法分析的工作,将代码一行一行切分为 token- Parser 则负责语法分析,将 Token 组织为抽象语法树- Compiler 则将语法树转化为指令集合的字节码流,最后由 Code Evaluator 来执行这些字节码。
  • 运行环境 Runtime Env - 包括运行时的对象、基础类型结构、内存分配器和实时的运行状态信息。 - ObjectType Structure 分别是程序在运行过程中生成的对象和Python中的自带内建对象,如int、List、dict等。- Memory Allocator 则负责申请创建对象需要的内存,本质就是封装了 C 语言里面的 malloc() 函数。- Current State 负责维护运行时的各类状态信息,以便在程序执行过程中如果发生状态变化(正常态和异常态)时,仍然能正常运行。

然后可以看一下Python源码的目录结构:

Imgur

这里有几个目录值得关注一下:

Include:包含了 Python 提供的所有头文件,如果用户需要自己用 C 或 C++来编写自定义模块扩展 Python,那么就需要用到这里提供的头文件。

Lib:包含了 Python 自带的所有标准库,且都是用 Python 语言编写的。

Modules:包含了所有用 C 语言编写的模块,比如 math、hashlib 等。它们都是那些对速度要求非常严格的模块。而相比而言,Lib 目录下则是存放一些对速度 没有太严格要求的模块,比如 os。

Parser:包含了 Python 解释器中的 Scanner 和 Parser 部分,即对 Python 源代码进行词法分析和语法分析的部分。除此以外,此目录还包含了一些有用的工 具,这些工具能够根据 Python 语言的语法自动生成 Python 语言的词法和语法分析器,与 YACC 非常类似。

Objects:包含了所有 Python 的内建对象,包括整数、list、dict 等。同时,该目录还包括了 Python 在运行时需要的所有的内部使用对象的实现。

Python:包含了 Python 解释器中的 Compiler 和执行引擎部分,是 Python 运行的核心所在。

PCbuild:包含了 Visual Studio 2003 的工程文件,研究 Python 源代码就从这里开始。

Programs:包含了 Python 二进制可执行文件的源码。

标签: python

本文转载自: https://blog.csdn.net/java_0429/article/details/120328469
版权归原作者 jilingwei_123 所有, 如有侵权,请联系我们删除。

“Python源码解读之零 Python源码整体架构”的评论:

还没有评论