全国城市切换

剖析Python源代码

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

在剖析源码的过程中,最好的学习方法是不断根据掌握的知识修改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

快捷导航

直销模式的产品介绍 双轨制直销合法吗 新直销奖金制度 什么叫分销平台 什么分销商 双轨直销软件公司 管理分销系统 分享分销模式 三级分销什么意思 直销 什么是 分销解决方案 直销是一种趋势 哪个直销好 直销什么是直销 直销怎么能做好 直销都有哪些商品 直销的十大优势 什么是微商分销 1688分销平台 哪些是直销公司 三级分销的软件 现在直销有那几样产品 产品分销模式 手机版直销软件 网上分销怎么做 直销奖金制度优缺点 做分销 分销费用 做直销是啥 分销平台商城