购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 Python程序运行原理

1.4.1 计算机程序设计语言的分类

计算机程序设计语言通常可分为三类:机器语言、汇编语言和高级语言。不同程序设计语言的程序运行方式可能有所不同。

1.机器语言

机器语言由二进制0、1代码指令构成,不同的CPU具有不同的指令系统。由于机器语言程序难编写、难修改、难维护,而且需要用户直接对存储空间进行分配,编程效率极低,所以这种语言已经被渐渐淘汰了。

2.汇编语言

汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系,所以汇编语言同样存在着难学难用、容易出错、维护困难等缺点。但是汇编语言也有自己的优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率高。从软件工程角度来看,只有在高级语言不能满足设计要求,或不具备支持某种特定功能的技术性能(如特殊的输入输出)时,才使用汇编语言。

3.高级语言

高级语言是面向用户的、基本上独立于计算机种类和结构的语言。其最大的优点是:形式上接近于算术语言和自然语言,接近于人们通常使用的语言。高级语言的一个命令可以代替几条、几十条甚至几百条汇编语言的指令。因此,高级语言易学易用,通用性强,应用广泛。

目前,广泛使用的Python、Java、PHP、C、C++、C#等语言均属于高级语言。

1.4.2 计算机程序的运行方式

机器语言编写的程序可以在计算机中直接运行,而汇编语言和高级语言编写的程序(通常称为源程序)则需要“翻译”成机器语言才能运行。源程序“翻译”的方式可分为解释方式和编译方式两种。

1.解释方式

解释方式是指源程序进入计算机时,翻译程序逐条翻译程序指令,每翻译一条指令便立即执行。特点:运行时逐语句解释执行,例如:JavaScript。优点:可以跨平台,开发效率高。缺点:运行效率低。

2.编译方式

编译方式是指源程序输入计算机后,翻译程序首先将整个程序翻译成用机器语言表示的目标程序,然后计算机再执行该目标程序,获得计算结果。解释方式不会产生目标程序。特点:运行时,计算机可以直接执行。例如:C语言。优势:运行速度快。缺点:不能跨平台,开发效率低。

1.4.3 Python程序的运行方式

Python是一种解释型的语言,但是这种说法是不严谨的,实际上,Python在执行时,首先会将.py文件中的源代码编译成Python的字节码,然后再由PVM(Python Virtual Machine,Python虚拟机)来执行这些编译好的字节码。这种机制的基本思想跟Java、.NET是一致的。然而,PVM与Java或.NET的Virtual Machine不同的是,PVM是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说PVM比Java或.NET的功能更强大,而是说和Java或.NET相比,PVM距离真实机器的距离更远。或者可以这么说,PVM是一种抽象层次更高的Virtual Machine。

从计算机的角度看,Python程序的运行过程包含两个步骤:解释器解释和虚拟机运行,如图1-47所示。

图1-47 Python程序运行过程

可将Python命令编写到一个源代码文件中,通过执行源代码文件运行程序。Python程序源代码文件扩展名通常为.py。在执行时,首先由Python解释器将.py文件中的源代码翻译成字节码(类似于Java的字节码和.NET的中间代码),再由PVM逐条将字节码翻译成机器指令执行。Python程序的这种机制和Java、.NET类似。

Python还可以通过交互方式运行。例如,在UNIX/Linux、Mac、Window等系统的命令模式下运行Python交互环境,然后输入Python指令直接运行。

实际开发中,Python常被称为胶水语言,这不是说它会把你的手指粘住,而是说Python能够很轻松地把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C++重写。

1.4.4 Python的解释器类型

所谓Python解释器是指实现Python语法的解释程序。Python解释器和虚拟机都是Python系统的组成部分,在不同平台或系统中,Python有不同的实现方式。Python的解释器类型主要有5种:CPython、Jython、IronPython、PyPy和IPython。其他一些Python实现方式有Stackless Python、Psyco即时编译器和Shedskin C++转换器等。

不同的实现方式只是代表了Python程序的执行形式不同,Python语言本身没有变化。或者说Python源程序可以在不同的Python实现方式中运行。

1.CPython

原始的、标准的Python实现方式通常称作CPython,前缀C表示它是用可移植的ANSI C语言实现。通常,从Python官方网站下载的Python属于CPython,不少Mac OS或Linux机器上预安装的Python也属于CPython。

2.Jython

Jython最早称为JPython,是Python在Java环境中的实现方式。Jython包含了Java类,它将Python源程序翻译成Java字节码,并通过Java虚拟机运行。Jython实现了Python与Java的无缝集成。利用Jython,在Python中可访问所有Java类,从而用于开发Web Applet和Servlet,创建基于Java的GUI应用。

3.IronPython

IronPython是在微软的.NET平台上实现的Python。IronPython和CPython类似,提供了交互式命令行。在交互式命令行中,可用Python访问所有.NET库。

4.PyPy

PyPy是用Python实现的Python解释器。PyPy比CPython更加灵活,易于使用和试验,以制定具体的功能在不同情况下的实现方法,而且很容易实施。

5.IPython

IPython是基于CPython之上的一个交互式解释器,IPython在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

1.4.5 Python程序的可执行文件

Python程序在开发结束后,有时需要将其打包为一个独立的可执行文件。在Python中将其称为冻结二进制文件(Frozen Binary)。冻结二进制文件是将程序的字节码、PVM以及程序所需的Python支持文件等捆绑到一起形成的一个独立的文件包。在Windows系统中冻结二进制文件就是一个exe文件。用户直接运行该文件包即可启动Python程序,无须额外通过Python来运行程序。

常用的第三方冻结二进制文件生成工具有py2exe和Pylnstaller。

(1)py2exe

py2exe用于将Python程序打包为一个独立的Windows可执行程序,其官方网站为:http://www.py2exe.org/。

(2)Pylnstaller

Pylnstaller生成的可执行文件支持Windows、Linux、Mac OS X、FreeBSD、Solaris和AIX等系统,其官方网站为:http://www.pyinstaller.org。

1.4.6 Python语言的文件类型

Python语言常用的文件类型有三种。

1.源代码文件

文件以.py为扩展名,由Python程序解释,不需要编译。

2.字节代码文件

文件以.pyc为扩展名,是由py源文件编译成的二进制字节码文件,由Python加载执行,速度快,能够隐藏源码。可以通过以下代码将.py文件转换成.pyc文件。

3.优化代码文件

文件以.pyo为扩展名,是优化编译后的程序,也是二进制文件,适用于嵌入式系统。可以通过以下代码将.py文件转换成.pyo文件。 GQDcoMeHuntVZLArxu8oNfrNJFkQxCvlFf3RLOe2H5wxSORXaQ7ojGevNjvsRogv

点击中间区域
呼出菜单
上一章
目录
下一章
×