在计算机语言中,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只知道如何解释和执行字节码python源码多平台编译,因此读取mymodule.py文件后的第一件事就是编译它。 编译结果将尝试保存到 mymodule.pyc 文件中。 我们稍后会讨论如何控制Python的编译过程。
其实和C++/Java等静态语言一样,都使用compile这个词,但实际情况还是有不同的。 首先,最明显的一点是,Python源码编译的最终结果不是机器码,而是字节码。 Python的编译其实主要是语法分析,生成具体的句型树,然后轮询成字节码。
从前面的介绍我们可以发现Python编译与C++相差甚远。 然而python源码多平台编译,它有点类似于Java,因为它们都生成字节码。 坦白讲,Java的编译过程比Python先进很多。 Java的类库在执行Java字节码时,会利用JIT将循环操作等热点转换为机器码。 所以有时候Java的性能可以达到接近C++的水平。