Python 中的 .pyc 文件是什么?

2025年1月5日 | 阅读 4 分钟

引言

当您编写 Python 代码时,源代码存储在扩展名为 .py 的文件中。但是,当您运行 Python 程序时,幕后会发生一些有趣的事情。Python 将您的源代码转换为称为字节码的格式,然后由 Python 解释器执行。此字节码存储在扩展名为 .pyc 的文件中。在本文中,我们将更详细地探讨 .pyc 文件,讨论它们是什么、如何创建以及如何使用它们。

.pyc 文件是什么?

.pyc 文件(Python Compiled file 的缩写)是包含 Python 源代码字节码的文件。当您运行 Python 脚本时,解释器首先检查是否存在相应的 .pyc 文件。如果存在,并且 .pyc 文件比相应的 .py 文件新,解释器将使用 .pyc 文件,而不是重新编译源代码。这可以缩短 Python 程序的启动时间,尤其是对于包含许多模块的大型项目。

.pyc 文件是如何创建的?

当您第一次运行 Python 脚本时,或者当上次编译以来相应的 .py 文件已被修改时,Python 解释器会将源代码编译成字节码并将其保存在 .pyc 文件中。.pyc 文件通常存储在与 .py 文件相同的目录中创建的 pycache 目录中。.pyc 文件的名称基于 .py 文件的名称,并加上源代码文件内容的哈希值。

.pyc 文件是如何使用的?

当您运行 Python 脚本时,解释器首先检查是否存在与相应 .py 文件对应的 .pyc 文件。如果存在,并且 .pyc 文件比 .py 文件新,解释器将使用 .pyc 文件。这可以缩短 Python 程序的启动时间,因为每次运行脚本时都不需要重新编译字节码。但是,如果自 .pyc 文件创建以来修改了 .py 文件,则会忽略 .pyc 文件,并重新编译 .py 文件。

.pyc 文件的优点

在 Python 项目中使用 .pyc 文件有几个好处:

  • 更快的启动时间:由于字节码已经编译,解释器可以更快地开始执行您的 Python 代码。
  • 减少磁盘空间:.pyc 文件通常比相应的 .py 文件小,因为它们只包含字节码而不包含源代码。
  • 源代码保护:由于字节码不是人类可读的,因此可以帮助保护您的源代码免遭轻易的反向工程。

.pyc 文件的缺点

虽然 .pyc 文件提供了许多好处,但也有一些缺点:

  • 兼容性问题:.pyc 文件在不同版本的 Python 之间并不总是兼容。如果您与使用不同版本 Python 的人共享 .pyc 文件,他们可能无法运行您的代码。
  • 版本控制:.pyc 文件是二进制文件,因此无法使用 Git 等工具轻松进行版本控制。这使得跟踪代码库随时间的变化更加困难。

如何手动创建 .pyc 文件

虽然 .pyc 文件通常由 Python 解释器自动创建,但您也可以使用 compileall 模块手动创建它们。该模块提供了一个 compile_dir() 函数,该函数将目录中的所有 .py 文件编译成 .pyc 文件。例如,您可以使用以下代码编译当前目录中的所有 .py 文件:

这将为当前目录及其子目录中的所有 .py 文件创建 .pyc 文件。

实施

. 创建 example.py 文件

创建并运行脚本以将 example.py 编译为 .pyc 文件

修改 example.py 并使用现有的 .pyc 文件运行它

输出

Hello, Alice!
Hello, Bob!

结论

总之,.pyc 文件是 Python 生态系统的重要组成部分,它们提供了一种存储和重用编译后的字节码的方法,以提高性能并减少磁盘空间。虽然它们提供了许多好处,例如更快的启动时间和源代码保护,但它们也有一些缺点,例如兼容性问题和版本控制方面的困难。总的来说,.pyc 文件是 Python 开发人员的一个有用工具,但了解它们的局限性并在项目中恰当地使用它们很重要。