引言
Python 并非完全是解释性语言,它也存在编译。先将源码文件 .py 编译为 .pyc/.pyo,然后由 Python 的虚拟机执行。相对于 .py 文件来说,编译为 .pyc/.pyo 本质上和 *.py 没有太大区别,只是提高了模块的加载速度,并没有提高代码的执行速度。
文件类型
Python 3.5 中不再使用 .pyo 文件,而是引入了一种更灵活的替代机制,.pyc 文件可以表示优化和未优化的字节码。优化级别信息可以包含在 *.pyc 文件的名字中
- *.py:源码文件,由 Python 程序解释。
- *.pyc:源码经编译后生成的二进制字节码(Bytecode)文件。
- *.pyo:优化编译后的程序,也是二进制字节码文件。
-
生成 *.pyc 文件
假设,有一个名为 hello.py 的源文件:
print("Hello World!")
要编译为 *.pyc 文件,需要引入 Python 中的模块 py_compile,在交互模式下输入:
>>> import py_compile
>>> py_compile.compile("hello.py")
这样,*.pyc 文件就生成了: