全国城市切换

剖析Python源代码

作者:郑州知网 日期:2020-07-15 人气:6468

在剖析源码的过程中,最好的学习方法是不断根据掌握的知识修改Python源代码,以印证自己的知识和猜想。

一、Python总体架构

  在最高的层次上,Python的整体架构可以分为三个主要部分,如上图,左边的Core Modules(内置模块)、Library(库)以及User-defined Modules(用户自定义模块)。

  在图的右边,是Python的运行时环境,包括对象/类型系统(Object/Type stuctures)、内存分配器(Memory Allocator)和运行时状态信息(Current State of Python )。运行时状态维护了解释器在执行字节码时不同的状态(比如正常状态和异常状态)之间切换的动作,我们可以将它视为一个巨大而复杂的有穷状态机。内存分配器则全权负责Python中创建对象时,对内存的申请工作,实际上它就是Python运行时与C中malloc的一层接口。而对象/类型系统则包含了Python中存在的各种内建对象,比如整数、list和dict,以及各种用户自定义的类型和对象。

  中间的部分,是python的核心——解释器(interpreter),也称为虚拟机。在解释器中,箭头的方向指示了Python运行过程中的数据流方向。其中Scanner对应词法分析,将文件输入的Python源代码或从命令行输入的一行行Python代码切分为一个个的token(指令): Parser对应语法分析,在Scanner的分析结果上进行语法分析,建立抽象语法树(AST):Compiler(编译器)是根据建立的AST生成指令集合——Python字节码(byte code),最后由Code Evaluator来执行这些字节码。因此,Code Evaluator又可以被称为虚拟机。

  图中,在解释器与右边的对象/类型系统、内存分配器之间的箭头表示"使用"关系;而与运行时状态之间的箭头表示“修改”关系,即Python在执行的过程中会不断地修改当前解释器所处的状态,在不同的状态之间切换。

二、Python源代码结构

  Python源码下载地址:

  选择相应的版本下载,本文以最新版进行分析。  wget

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

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

  Modules:  该目录中包含了所有用C语言编写的模块,比如random、cStringIO等。Modules中的模块是那些对速度要求非常严格的模块,而有一些对速度没有太严格要求的模块,比如os,就是用Python编写的,并且放在Lib目录下。

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

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

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

三、编译安装

  ./configure

  make all 

  make install



你觉得这篇文章怎么样?

00

快捷导航

如何快速直销 什么是分销服务 电商分销加盟 直销双轨模式 直销是怎样定义的 免费的分销系统 微信三级分销哪家好 分销小程序 分销是什么意思 做直销的公司有哪些 国内有多少直销 什么直销产品好做 广州分销模式 中国直销意思 微商三级分销 直销的产品有哪些品牌大全 直销有什么解释 saas渠道分销 直销商品都有什么 微商分销系统价格 网上有直销产品 分销平台的优势 微分销系统那家好 直销行业有哪些 新零售模式就是直销 微商分销系统怎么做 it产品分销 怎样直销 直销类产品的 电商分销方案