全国城市切换

剖析Python源代码

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

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

快捷导航

如何做分销平台 传统分销渠道模式 在中国合法的直销公司 关于直销产品 微信分销三级 网上运作直销 微分销报价 全渠道分销服务 销售 分销 分销渠道模式有哪些 直销公司的区别 免费微商城分销 直销奖金制度有哪些 什么是直销行业 分销系统的价格 什么直销公司好 做什么直销好 好的直销公司 服务分销 全国直销产品 直销是什么概念的 中国所有直销公司 直销是何呢 直销业 分销代理 分销 销售 直销模式的产品 2016合法直销排名 直接营销 客户分销系统