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+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.