Wetts's blog

Stay Hungry, Stay Foolish.

0%

Python-解释器.md

执行程序时,Python 内部会先将源代码编译成所谓字节码的形式。编译时一个简单的翻译步骤,字节码时一种低级的、与平台无关的形式。这些字节码可以提高执行速度。

如果 Python 进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以 .pyc 为扩展名的文件。

  • 对 Python 3.2 之前的版本,运行程序之后,你会在那些源代码的附近(也就是说在同一个目录下)看到这些文件。
  • 在 Python 3.2 以及之后的版本,Python 将把 .pyc 字节码存储在名为 __pychache 的子目录中,这个子目录位于与源文件相同的路径下。【新版 Python 的 __pycache__ 子目录中的文件命名中包含了编译它们的 Python 的版本信息。

何时重新编译:

  • 源文件改变。检查源文件和字节码文件的最后一次修改的时间戳。
  • Python 的版本。使用了不同的 Python版本。

如果 Python 无法在机器上写入字节码,程序仍然可以工作:字节码会在内存中生成,并在程序结束时直接被丢弃。

一旦程序编译成字节码(或字节码从已经存在的 .pyc 文件中载入),之后的字节码发送到通常称为 Python 虚拟机(Python Virtual Machine,简称为 PVM)的程序上来执行。