全国城市切换

剖析Python源代码

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

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

快捷导航

直销的公司 微信分销系统公司 分销平台功能 如何做电商分销 广州分销模式 那种直销好做 直销软件系统 直销商城软件 分销平台管理软件 直销产品什么 直销网站公司 那些事直销 分销的意思 什么是真正的直销 怎么样做直销好 直销软件的价格 分销系统价格多少 分销系统企业 什么是直销公司奖金制度 微商裂变分销系统 分销部 什么是直销和分销 直销是什么产品 分销渠道的类型 真正的直销 做分销商城 分销微商系统 直销有哪些行业 分销商什么意思 直销的模式是怎样的