Python 中九種關(guān)鍵文件類型你了解幾個?
當你遇到名稱以 .ipynb、.pyi、.pyc 等結(jié)尾的 Python 文件時,你是否會感到困惑?
你想知道所有這些文件類型之間的區(qū)別嗎?
在這里云朵君和大家一起了解所有這些 Python 文件類型。??
.py文件:標準 Python 源代碼
不用多說,每個懂 Python 的開發(fā)者都會把 Python 代碼寫到文件中.py,直接執(zhí)行就可以了,像這樣:
python filename.py
簡單地說,這些.py文件是包含 Python 代碼的可執(zhí)行純文本文件。
.ipynb文件:交互式 Jupyter Notebook
使用該擴展保存的 Jupyter Notebooks.ipynb對于數(shù)據(jù)分析和科學(xué)計算至關(guān)重要。
這種類型的 Python 文件對于數(shù)據(jù)科學(xué)家來說更加用戶友好。因為它提供了一個交互式環(huán)境,用于在單個文檔中結(jié)合代碼執(zhí)行、數(shù)據(jù)可視化和敘述文本。
Jupyter Notebook 制作的用于數(shù)據(jù)分析的精美 .ipynb 文件示例
.pyi文件:使用接口文件進行 Python 類型提示
Python 接口文件(帶有擴展名的文件.pyi),或稱為 Python 存根文件,在使用類型提示增強 Python 代碼方面發(fā)揮著至關(guān)重要的作用。
例如,我們有一個名為test.py以下程序的 Python 文件:
def multiply(a, b):
return a * b
print(multiply(2.2, 10))
IDE(我使用的是 PyCharm)或其他 Python 類型檢查工具沒有給它們?nèi)魏晤愋吞崾尽?/p>
現(xiàn)在,創(chuàng)建一個與.py文件同名的.pyi文件:
在 PyCharm 中創(chuàng)建 Python 存根文件
如上圖所示,在PyCharm中,我們可以在創(chuàng)建此文件時直接選擇Python存根文件類型。
現(xiàn)在將以下代碼寫入test.pyi文件中:
def multiply ( a: int, b: int ) -> int : ...
如果我們test.py再次打開該文件,IDE 會提醒我們現(xiàn)在不匹配的類型:
圖片
它使你的程序類型更安全。但是你可能會問,為什么不直接在原始 Python 文件(.py文件)中添加類型提示呢?
對于我們的例子,.pyi毫無疑問該文件并不是必要的,可以只在原始函數(shù)定義中聲明int類型。
.pyi將類型注釋與實現(xiàn)分離可以使主代碼保持干凈并專注于功能。
更重要的是,為了向后兼容,存根文件可以在不修改原始源文件的情況下為遺留代碼添加類型提示。畢竟,修改以前同事寫的舊代碼是一件很頭疼的事。??
.pyc文件:編譯后的 Python 字節(jié)碼
當 Python 腳本作為模塊導(dǎo)入時,解釋器會將其編譯為字節(jié)碼并將其保存為.pyc文件,可以通過跳過不必要的重新編譯來改善模塊加載時間。
這種類型的文件由解釋器自動生成,它包含字節(jié)碼,它是源代碼(相對.py文件)的低級、與平臺無關(guān)的表示形式。
從本質(zhì)上講,字節(jié)碼是 Python 的虛擬機解釋和執(zhí)行的內(nèi)容。
鑒于它是以二進制格式保存的并且不可讀,因此在大多數(shù)情況下我們不需要過多擔心.pyc文件。
.pyw文件:Windows GUI Python 腳本
Python 不僅適用于數(shù)據(jù)科學(xué)和后端開發(fā)。它也是一種用于圖形用戶界面 (GUI) 開發(fā)的語言。
對于 Windows GUI,.pyw文件是為其設(shè)計的特定類型的 Python 腳本文件。這些文件用于在不打開命令提示符窗口的情況下運行 Python 腳本,使其成為 GUI 應(yīng)用程序的理想選擇。
創(chuàng)建.pyw文件很簡單——只需使用擴展名.pyw而不是保存.py腳本即可。.pyw文件可以像.py文件一樣直接運行。
例如通過tkinter編寫一個簡單的UI組件并將其保存為.pyw文件:
# example.pyw
import tkinter as tk
def greet():
label.config(text=f"Hello, {entry.get()}!")
root = tk.Tk()
root.title("Greeting App")
label = tk.Label(root, text="Enter your name:")
label.pack()
entry = tk.Entry(root)
entry.pack()
button = tk.Button(root, text="Greet", command=greet)
button.pack()
root.mainloop()
要執(zhí)行它,我們只需在 Windows 資源管理器中雙擊該文件即可?;蛘?,我們可以從命令行使用以下命令運行它pythonw:
pythonw example.pyw
.pxd 和 .pyx 文件:Cython 源文件和聲明文件
Cython 是一種編程語言,它使為 Python 編寫 C 擴展變得像編寫 Python 本身一樣簡單。它是Python 的超集,旨在讓主要用 Python 編寫的代碼提供類似 C 的性能。
Cython中使用的兩種重要文件類型是.pyx和.pxd文件。
- .pyx文件:這些是包含主要實現(xiàn)代碼的 Cython 源文件。文件.pyx中的代碼可以是 Python 和類似 C 的語法的混合,允許你編寫與 Python 無縫集成的高性能代碼。
- .pxd文件:這些是 Cython 聲明文件,類似于 C 頭文件。它們包含類型定義、函數(shù)聲明、變量和可在多個.pyx文件之間共享的類。
.pyd文件:Python 動態(tài)模塊
.pyd文件是 Python 動態(tài)模塊。(不是Cython 的.pxd文件。)
這些文件相當于 Windows 上的 DLL(動態(tài)鏈接庫)。它允許 Python 與已編譯的 C 或 C++ 代碼交互,從而實現(xiàn)高性能和低級系統(tǒng)交互。
要創(chuàng)建.pyd文件,我們通??梢杂?C 或 C++ 編寫代碼,然后使用針對 Windows 平臺的編譯器對其進行編譯。該過程通常涉及使用 Microsoft Visual Studio 或 MinGW 等工具。
在游戲開發(fā)中,高性能游戲引擎和圖形庫通常利用.pyd文件進行渲染和物理計算。
.pyo文件:優(yōu)化的 Python 字節(jié)碼文件
.pyo文件用于存儲優(yōu)化的字節(jié)碼,通常在使用優(yōu)化標志(-O)運行 Python 時創(chuàng)建。
例如,在Python 3.5之前,運行test.py如下名稱的Python腳本會生成一個test.pyo文件:
python-O test.py
注意:從 Python 3.5 開始,.pyo不再使用文件,而是將優(yōu)化信息存儲在.pyc文件中。
寫在最后
如果你使用 Python 的時間足夠長,你可能會遇到所有 9 個 Python 文件擴展名。