當前位置: 妍妍網 > 碼農

你不知道的多種Python檔格式~

2024-07-03碼農

來源:麥叔編程

今天同事給我扔了一個 .pyd 檔,說讓我跑個數據。然後我就傻了。。

不知道多少粉絲小夥伴會run . pyd 程式碼檔? 如果你也懵懵的,請繼續往下讀吧

今天科普下各類 Python 程式碼檔的字尾,給各位 Python 開發「掃掃盲」。

.py

最常見的Python程式碼檔字尾名,官方稱 Python原始碼檔

不用過多解釋了~

.ipynb

這個還是比較常見的, .ipynb Jupyter Notebook 檔的副檔名,它代表" IPython Notebook "。

學過數據分析,機器學習,深度學習的同學一定不陌生!

.pyi

.pyi 檔是 Python 中的型別提示檔,用於提供程式碼的 靜態型別 資訊。

一般用於幫助開發人員進行 型別檢查 靜態分析

範例程式碼:

hellp.pyidef hello(name: str) -> None: print(f"hello {name}")

.pyi 檔的命名約定通常與相應的 .py 檔相同,以便它們可以被自動關聯在一起。

.pyc

.pyc Python 字節碼檔的副檔名,用於儲存已編譯的 Python 原始碼的中間表示形式,因為是二進制檔所以我們無法正常閱讀裏面的程式碼。

.pyc 檔包含了已編譯的字節碼,它可以更快地被 Python 直譯器載入和執行,因為直譯器無需再次編譯原始碼。

.pyd

.pyd Python 擴充套件模組的副檔名,用於表示使用 C C++ 編寫的二進制 Python 擴充套件模組檔。

.pyd 檔是編譯後的二進制檔,它包含了編譯後的擴充套件模組程式碼以及與 Python 直譯器互動所需的資訊。

此外, .pyd 檔透過 import 語句在 Python 中匯入和使用,就像匯入普通的 Python 模組一樣。

由於 C C++ 的執行速度通常比純 Python 程式碼快,可以使用擴充套件模組來最佳化 Python 程式碼的效能,尤其是對於計算密集型任務。

.pyw

.pyw Python 視窗化指令碼檔的副檔名。

它表示一種特殊型別的 Python 指令碼檔,用於 建立沒有命令列界面 (即控制台視窗)的視窗化應用程式。

一般情況下,執行 Python 指令碼會開啟一個命令列視窗,其中顯示指令碼輸出和接受使用者輸入。但是,對於某些應用程式,如圖形化使用者介面(GUI)應用程式,不需要命令列界面,而是希望在視窗中顯示互動界面。這時就可以使用 .pyw 檔。

範例程式碼:

# click_button.pywimport tkinter as tkdef button_click(): label.config(text="Button Clicked!")window = tk.Tk()button = tk.Button(window, text="Click Me", command=button_click)button.pack()label = tk.Label(window, text="Hello, World!")label.pack()window.mainloop()

.pyx

.pyx Cython 原始碼檔的副檔名。

Cython 是一種 編譯型的靜態型別擴充套件語言 ,它允許在 Python 程式碼中使用 C 語言的語法和特性,以提高效能並與 C 語言庫進行互動。

我對比了下Cython與普通python的執行速度:

fb.pyx(需使用cythonize命令進行編譯)

cdef int a, b, idef fibonacci(n):if n <= 0:raise ValueError("n必須是正整數")if n == 1:return 0elif n == 2:return 1else: a = 0 b = 1for i in range(3, n + 1): a, b = b, a + breturn b

run.py

import fbimport timeitdef fibonacci(n):if n <= 0:raise ValueError("n必須是正整數")if n == 1:return 0elif n == 2:return 1else: a, b = 0, 1for _ in range(3, n + 1): a, b = b, a + breturn b# 純Python版本python_time = timeit.timeit("fibonacci(300)", setup="from __main__ import fibonacci", number=1000000)# Cython版本cython_time = timeit.timeit("fb.fibonacci(300)", setup="import fb", number=1000000)print("純Python版本執行時間:", python_time)print("Cython版本執行時間:", cython_time)

得出結果:

純Python版本執行時間: 12.391942400000516Cython版本執行時間: 6.574918199999956

在這種計算密集任務情況下, Cython 比普通 Python 效率快了近一倍。

加入知識星球 【我們談論數據科學】

提供100節專屬Pandas數據分析視訊教程

600+ 小夥伴一起學習!