Python源代码的编译的具体方案应用描述

在计算机语言中Python源代码一般的情况下是不进行编译的,只是通过几个文件就能运用的,以下的文章主要是通过Python源代码的相关代码来具体描述Python源代码的编译是如何进行的。

我们一般使用这样的命令运行一个python程序:

C:\> python im.py 

其中,im.py文件的内容是:

#!/usr/bin/env python  


import mymodule  



mymodule.say(”hello”)   

执行这一命令后,Python解释器其实并不一定会读入mymodule.py文件,它会尝试读取mymodule.pyc文件或者mymodule.pyo文件。如果都失败了,或者mymodule.py文件比mymodule.pyc/mymodule.pyo新,才转而读入mymodule.py文件。

Python只懂得解释执行字节码,所以mymodule.py文件读入后第一件事就是先进行编译。编译的结果会被尝试保存到mymodule.pyc文件中。等一下会讨论如何控制Python的编译过程。

虽然与C++/Java这样的静态语言一样,采用了编译(compile)这个术语,实际情况还是有所不同的。首先,最明显的一点,Python源代码编译的最终结果不是机器码,而是字节码。Python的编译实际上主要是进行文法分析,生成一个抽象语法树,然后转储成字节码形式了事。

从上面的介绍可以发现Python的编译与C++相去甚远。不过倒与Java有些相像,因为它们都生成字节码。凭良心说,Java的编译过程比Python先进很多。Java的解释器在执行Java字节码的时候,会使用JIT,将循环操作等热点转化成为机器码。所以有时候Java的性能能够达到接近C++的级别。

相关推荐