Python 文件扩展名 .pyc、.pyd 和 .pyo 分别代表什么?


在执行 Python 程序时,.py、.pyc、.pyo 和 .pyd 文件各有其意义。它们用于 -

.py:您编写的输入源代码。

.pyc:编译后的字节码。如果您导入模块,Python 将构建一个包含字节码的 *.pyc 文件,以便以后更容易(更快)地导入它。

.pyo:在启用优化 (-O) 时创建的 *.pyc 文件。

.pyd:Python 的 Windows dll 文件。

在 Python 中,有几个文件扩展名用于指示不同类型的文件。以下是 Python 中一些最常见的文件扩展名及其含义 -

.py 文件

.py:这是 Python 源代码文件的标准文件扩展名。这些文件包含 Python 代码,这些代码可以由 Python 解释器执行。Python 源代码以 .py 扩展名的文件编写。例如,名为“my_script.py”的文件包含可以由 Python 解释器执行的 Python 代码。-

示例

# hello.py
# my_script.py
def greet(name):
   print("Hello, " + name + "!")
greet("Alice")

输出

Hello, Alice!

可以通过在命令行中执行 python hello.py 来运行此代码。

.pyc 文件

pyc:这是编译后的 Python 代码文件的扩展名。当执行 .py 文件时,Python 解释器会将代码编译成字节码并将其保存到 .pyc 文件中,以提高后续执行的性能。

当您运行此脚本时,解释器将创建代码的编译字节码版本并将其保存到名为 my_script.pyc 的文件中。例如 -

示例

# hello.py
print("Hello, world!")

输出

Hello, world!

运行此代码将在同一目录中生成一个 hello.pyc 文件。

.pyo 文件

.pyo:这是编译后的 Python 代码文件的另一个扩展名。.pyc 和 .pyo 文件之间的唯一区别在于,.pyo 文件是在启用优化的情况下编译的。如果您使用 -O 标记运行此脚本,解释器将创建代码的优化编译字节码版本并将其保存到名为 my_script.pyo 的文件中。例如 -

示例

# hello.py
# my_script.py
def greet(name):
   print("Hello, " + name + "!")
greet("Alice")

输出

Hello, Alice!

运行此代码将生成一个 my_script.pyc 文件,但使用 -O 标记运行代码 (python -O my_script.py) 将生成一个 my_script.pyo 文件。

.pyd 文件

.pyd:这是 Windows 上用于包含编译 Python 代码的二进制文件的扩展名。这些文件类似于 .pyc 文件,但旨在用作可以由其他程序加载的动态链接库 (DLL)。如果您有一个 Python 模块包含用 C 或 C++ 编写的代码,则编译后的代码将保存到具有 .pyd 文件扩展名的共享库文件中。必须注意的是,.pyd 文件特定于 Windows 平台。在其他平台(如 macOS 或 Linux)上,等效的文件扩展名是 .so(共享对象)或 .dylib(动态库)。

示例

# mymodule.py
# my_module.py
def add(a, b):
   return a + b
print(add(3,4))
# my_module.pyd
# code implements the `add` function and is compiled to a shared library

输出

7

使用 cython --embed mymodule.py 编译此代码将生成一个 mymodule.c 文件,然后可以使用 C 编译器将其编译成 mymodule.pyd 文件。

总的来说,Python 中这些文件扩展名代表了代码编译和执行的不同阶段;不同类型的文件有其对应的用途。了解它们含义和区别可以帮助您编写更高效和优化的 Python 代码,并根据您的具体需求选择合适的文件扩展名。

更新于:2023年5月2日

7K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告