來源:麥叔編程
今天同事給我扔了一個.pyd文件,說讓我跑個數據。然后我就傻了。。
不知道多少粉絲小伙伴會run?.pyd代碼文件?如果你也懵懵的,請繼續往下讀吧。。
今天科普下各類Python代碼文件的后綴,給各位Python開發“掃掃盲”。
.py
最常見的Python代碼文件后綴名,官方稱Python源代碼文件。
不用過多解釋了~
.ipynb
這個還是比較常見的,.ipynb是Jupyter Notebook文件的擴展名,它代表"IPython Notebook"。
.pyi
.pyi文件是Python中的類型提示文件,用于提供代碼的靜態類型信息。
一般用于幫助開發人員進行類型檢查和靜態分析。
示例代碼:
?
hellp.pyi def 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.pyw import tkinter as tk def 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, i def fibonacci(n): if n <= 0: raise ValueError("n必須是正整數") if n == 1: return 0 elif n == 2: return 1 else: a = 0 b = 1 for i in range(3, n + 1): a, b = b, a + b return b
?
run.py
?
import fb import timeit def fibonacci(n): if n <= 0: raise ValueError("n必須是正整數") if n == 1: return 0 elif n == 2: return 1 else: a, b = 0, 1 for _ in range(3, n + 1): a, b = b, a + b return 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.391942400000516 Cython版本執行時間: 6.574918199999956
?
在這種計算密集任務情況下,Cython比普通Python效率快了近一倍。
評論
查看更多