Python学习手册——Python运行机制和运行情况

Python 运行机制

机器角度

当Python"运行"时,在代码开始进行处理之前,Python会执行一些步骤。

  • 第一步 编译成字节码
    程序执行时,Python会先将源代码编译成字节码的形式。字节码是源代码底层的、与平台无关的表现形式Python通过把每一条源语句分解为单一步骤来将这些源语句翻译成一组字节码的执行。
    字节码可以提高执行速度,要比源代码的运行速度快的多
  • Python会将字节码生成一个以.pyc为扩展名的文件。字节码可以让使得程序启动速度更加快速更加优化,在下一次启动后如果保存字节码之后没有修改过源代码的话,Python将会加载.pyc文件并跳过编译这个步骤。如果Python无法在设备中写入字节码,程序依然可以工作,字节码将会在内存中生成并在程序结束时简单的丢弃。

Python虚拟机 PVM

程序编译成字节码后,.pyc文件载入后,字节码文件通常发送到Python虚拟机上来执行。PVM不是一个独立的程序,也不需要安装。是Python的运行引擎,在PVM运行字节码文件后,Python解释器的工作才算是结束。


python执行过程.png

性能解释

Python字节码不是机器的二进制代码。字节码是特定于Python的一种表现形式,而C C++这类编译语言需要build或者make的步骤,所以Python无法像C C++代码执行一样快的原因

开发含义

Python执行模块的另一个情况是开发和执行环境是同一个环境。Python编译期总是在运行时出现,并且是运行程序系统的一部分。在程序开始执行之前不需要预编译和连接。这样使得Python具有更多的动态特性。所有的事情都是在程序运行时发生的。甚至还包括建立函数和类的操作以及连接的模块。

Python实现的替代者

Python语言主要有三种实现方式:CPython.Jython和IronPython。其中CPython是标准的实现。其他的都是有特点的目标和角色的。

CPython

CPython是原始的、标准的Python实现方式通常称作CPython。现在大多数的分发的Python都是从CPython.

JPython

JPthon也叫做Jython是一种Python语言的替代实现方式。目的是为了与Java编程语言集成。Jython中包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机上。
Jython的目标是让Python代码能够脚本化Java应用程序。实现与Java的无缝集成。Python代码被翻译成Java字节码。在运行时看起来就像一个真正的Java程序一样,可以应用与开发web applet和servlet

IronPython

IronPython的第三种实现方式IronPython的设计目的是让Python程序可以与windows平台上的.Net框架以及与之对应的Linux上的开源项目编写成相应的继承

模块导入和重载

每一个以扩展名.py结尾的Python源代码文件都是一个模块,其它的其文件可以通过导入一个模块读取这个模块的内容。导入从本质上来讲,就是载入另一个文件。并能够读取那个文件的内容。一个模块的内容通过这样的属性能够被外部使用。
导入模块是一个开销很大的操作,以至于每个文件、每个程序运行不能够重复多于1次。如果想要Python在同同一次会话中再次运行文件,需要调用imp标准库模块中可用的reload函数(Python2.6内置 但在Python3.0中不是内置的)
导入者得到了模块文件中在顶层所定义的所有变量名。这些变量名通常被赋值给通过模块函数、类、变量以及其他被导出的工具。

模块和命名空间

Python程序往往由多个模块文件构成,通过import语句连接在一起,每个模块文件是一个独立完备的变量包,即一个命名空间。一个模块文件不能呢个看到其他文件定义的变量名,除非显式的导入了那个文件,所以模块文件在代码中起到了最小化命名冲突的作用。

你可能感兴趣的:(Python学习手册——Python运行机制和运行情况)