一文詳解Python文件

2023-08-17 12:21:57 來源:麥叔編程

來源:麥叔編程

今天同事給我扔了一個.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效率快了近一倍。

審核編輯:湯梓紅

標簽:

上一篇:單相光伏發電系統中前級Boost電路硬件設計實例
下一篇:最后一頁