來源:麥叔編程
今天同事給我扔了一個
.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
效率快了近一倍。
加入知識星球 【我們談論數據科學】
提供100節專屬Pandas數據分析視訊教程
600+ 小夥伴一起學習!