`

Python解释执行原理

 
阅读更多

Python解释执行原理

 

      这里的解释执行是相对于编译执行而言的。我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件。运行该程序的时候,就可以把二进制程序从硬盘载入到内存中并运行。

      但是对于Python而言,python源码不需要编译成二进制代码,它可以直接从源代码运行程序。当我们运行python文件程序的时候,python解释器将源代码转换为字节码,然后再由python解释器来执行这些字节码。这样,python就不用担心程序的编译,库的链接加载等问题了。

      对于python解释语言,有以下3方面的特性:

  1. 每次运行都要进行转换成字节码,然后再有虚拟机把字节码转换成机器语言,最后才能在硬件上运行。与编译性语言相比,每次多出了编译和链接的过程,性能肯定会受到影响。
  2. 由于不用关心程序的编译和库的链接等问题,开发的工作也就更加轻松啦。
  3. python代码与机器底层更远了,python程序更加易于移植,基本上无需改动就能在多平台上运行。

      在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言

  1.   编译实现的语言,如:C、C++、Fortran、Pascal、Ada。由编译型语言编写的源程序需要经过编译,汇编和链接才能输出目标代码,然后由机器执行目标代码。目标代码是有机器指令组成,不能独立运行,因为源程序中可能使用了一些汇编程序不能解释引用的库函数,而库函数又不在源程序中,此时还需要链接程序完成外部引用和目标模板调用的链接任务,最后才能输出可执行代码。
  2.   解释型语言,解释器不产生目标机器代码,而是产生中间代码,这种中间代码与机器代码不同,中间代码的解释是由软件支持的,不能直接使用在硬件上。该软件解释器通常会导致执行效率较低,用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。和编译的程序不同的是, 解释程序的任务是逐一将源代码的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码再执行。对于解释型语言,需要一个专门的解释器来执行该程序,每条语句只有在执行是才能被翻译,这种解释型语言每执行一次就翻译一次,因而效率低下。
  3.   Java解释器,java很特殊,java是需要编译的,但是没有直接编译成机器语言,而是编译成字节码,然后在Java虚拟机上用解释的方式执行字节码。Python也使用了类似的方式,先将python编译成python字节码,然后由一个专门的python字节码解释器负责解释执行字节码。
  4.   python是一门解释语言,但是出于效率的考虑,提供了一种编译的方法。编译之后就得到pyc文件,存储了字节码。python这点和java很类似,但是java与python不同的是,python是一个解释型的语言,所以编译字节码不是一个强制的操作,事实上,编译是一个自动的过程,一般不会在意它的存在。编译成字节码可以节省加载模块的时间,提高效率。
  5.   除了效率之外,字节码的形式也增加了反向工程的难度,可以保护源代码。这个只是一定程度上的保护,反编译还是可以的。
分享到:
评论

相关推荐

    Python解释执行原理分析

    本文较为详细的分析了Python解释执行的原理,对于深入理解Python可以起到一定的帮助作用。具体分析如下: 首先,这里的解释执行是相对于编译执行而言的。我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从...

    Python程序执行原理-程序执行原理简介

    Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器...

    python-运行原理.docx

    在执行阶段,Python解释器会执行机器语言代码。Python解释器会将代码加载到内存中,并在内存中执行。Python解释器会根据代码的逻辑执行相应的操作,例如计算、赋值、循环等。 Python解释器还提供了一些高级功能,...

    Python程序执行原理-明确目标

    Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器...

    Python程序执行原理明确程序的作用

    Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器...

    Python程序执行原理-明确变量负责保存数据

    Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器...

    Python程序执行原理-计算机中的三大件

    Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器...

    Python程序执行原理-计算机三大件特点的问答

    Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器...

    python-运行原理(1).docx

    python 运行原理 Python 是一种解释型语言,与其他编程语言不同,其程序的运行不需要先进行编译,而是由解释器将程序的代码逐行翻译为机器语言并执行。 Python 解释器主要有两种,分别是 CPython 和 Jython。...

    Python程序运行原理图文解析

    主要介绍了Python程序运行原理图文解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    Python实现的Scheme方言SchemePy.zip

    Python实现的Scheme方言,支持宏、continuation、lambda、各种基本类型等等,可以直接Python解释执行,也可以编译到JavaScript。编译到JS可以与JavaScript动态交互(互相调用),支持浏览器和nodejs环境。lex和yacc...

    初步探究Python程序的执行原理

    1. 过程概述 ...Python test.py会对test.py进行编译成字节码并解释执行,但是不会生成test.pyc。 如果test.py加载了其他模块,如import util,Python会对util.py进行编译成字节码,生成util.pyc,然后对

    Python核心编程第二版 高清文字版

    本书能让你更全面的了解python,每一个点都有详细的原理分析,代码解析,错误分析,深入浅出,能让你实实在在的知道你为什么这么用,而不那么用,每一条代码存在的意义,很多书里有大量的实例和代码,没有原理性说明...

    python中模块查找的原理与方法详解

    本文主要给大家介绍了关于python模块查找的原理与方式,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍: 基础概念 module 模块, 一个 py 文件或以其他文件形式存在的可被导入的就是一个模块 ...

    Python-通过交互式Jupyter演示和数学来解释流行机器学习算法的Python示例

    Python-通过交互式Jupyter演示和数学来解释流行机器学习算法的Python示例

    基于python爬虫原理的桌面翻译小软件

    (3)利用Pyinstaller将python程序打包成exe可执行文件,体验一下不用python解释器也能运行python程序的乐趣。 gui用户界面设计入门不难,此处不作说明。 python爬虫的基本流程一般分为四个步骤 1)发送请求:通过...

    Python在线运行代码助手

    Python代码运行助手将代码保存为临时文件,然后调用Python解释器执行代码; 网页显示代码执行结果: 下载 点击右键,目标另存为:learning.py 备用下载地址:learning.py 完整代码: #!/usr/bin/env python3 # -*-...

    Python函数生成器原理及使用详解

    # python解释器 python.exe 会用一个叫做PyEval_EvalFrameEx(c语言函数)去执行foo函数,首先会创建一个栈帧(stack frame), """ python在运行前会编译成字节码对象 当foo调用bar函数进,又会创建一个栈帧, 关键是所有的...

    Python中的延迟绑定原理详解

    因为Python解释器,遇到lambda(或者def),只是定义了一个匿名函数对象,并保存在内存中,只有等到调用这个匿名函数的时候,才会执行函数内部的代码(x*i)。所以匿名函数中的i并不是立即引用后面循环中的i值的,...

    windows原理与应用实验及作业.zip

    1. 要进行Python开发,首先需要Python解释器,这里说的安装Python就是安装Python解释器。 2. 能提供Python环境的产品有官网提供的Cpython,它是由C语言写的。还有PyPy及Jython等,Jython是基于java实现的Python环境...

Global site tag (gtag.js) - Google Analytics