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+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告