Python是一種面向對象、解釋型計算機程序設計語言。Python 語法簡潔、清晰,具有豐富和強大的類庫。
Python源代碼遵循 GPL (GNU General Public License) 協議,由 Guido van Rossum 於 1989 年底發明,第一個公開發行版發行於 1991 年。
Python 常被稱為膠水語言,能把用其他語言編寫的各模塊 (尤其是 C/C++) 輕松地聯結在一起。常見情形是,用 Python 快速生成程序原型 (有時甚至是程序最終界面),然后對其中有特別要求的部分,用更合適的語言改寫;譬如:3D 游戲中的圖形渲染模塊,性能要求特別高,就可用 C/C++ 重寫,而后封裝為 Python 可調用的擴展類庫。需要注意的是,在您使用擴展類庫時可能需要考慮平台問題,某些擴展類庫可能不提供跨平台實現。
一般認為,Python 是一種解釋性語言,Python 在執行時,會先將 .py 文件中的源代碼編譯成 byte code (字節碼),然后再由 Python Virtual Machine 來執行這些編譯 byte code。
這種機制的基本思想跟 Java、.NET 一致;但 Python Virtual Machine 與 Java 或 .NET 的 Virtual Machine 不同的是:Python 的 Virtual Machine 是一種更高級的 Virtual Machine。這里的高級並不是通常意義上的高級,不是說 Python 的 Virtual Machine 比 Java 或 .NET 的功能更強大,更拽,而是說和 Java 或 .NET 相比,Python 的 Virtual Machine 距真實機器的距離更遠。或者可以這么說,Python 的 Virtual Machine 是一種抽象層次更高的 Virtual Machine。
Python 提供了一種中間編譯結果保存機制,即 byte code,或更准確地說,保存 PyCodeObject。事實上,Python 確實提供了這樣一種機制 —— .pyc 文件。在執行一個 .py 文件的源代碼之后,Python 並不會自動生成與該 .py 文件對應的 .pyc 文件。Python 會根據需要自動觸發、創建 .pyc 文件,原理很簡單,就是利用 Python 的 import 機制。
在 Python 運行過程中如碰到 import abc 這樣的語句,Python 將會在設定好的 path 中尋找 abc.pyc 或 abc.dll 文件。若沒有這樣的文件,而只是發現了 abc.py 文件,那么,Python 會首先將 abc.py 編譯成相應的 PyCodeObject 中間結果,然后再創建 abc.pyc 文件,並將中間結果寫入該文件。接下來,Python 才會對 abc.pyc 文件進行一個 import 動作,實際上也就是將 abc.pyc 文件中的 PyCodeObject 重新在內存中復制出來,加以運行。
由於 Python .pyc 文件的此種運行機制,所以,可隨時刪除所有中間過程 .pyc 文件,當 Python 再次運行時,還會重生成這些 .pyc 文件,對您所編輯程序的運行並無任何影響。當然,得有源代碼才行。
視窗用 python.exe 運行 .py ,用 pythonw.exe 運行 .pyw。因為安裝視窗版 Python 時,擴展名 .py 自動被登記為用 python.exe 運行, 而 .pyw 則被登記為用 pythonw.exe 運行。
.py 文件
以 .py 作擴展名的文件是 Python 源代碼文件,由 python.exe 解釋,可在控制台下運行。
當然,也可用文本編輯器或其它專用 Python IDE (集成開發環境) 工具進行修改。
.pyc 文件
以 .pyc 作擴展名的文件是 python 編譯文件。.pyc 文件是不能直接用文本編輯器進行編輯,其優點是 .pyc 文件的執行速度要遠快於 .py 文件。
至於為什么要有 .pyc 文件,因為 .py 文件是可直接看到源碼的。若是軟件開發商,不可能把源碼泄漏出去?所以,就需編譯成 .pyc 后再發布。
但 .pyc 文件只是經簡單編譯,並未加密,因此,有些工具還能反編譯它得出源代碼。
.pyw 文件
.pyc 文件執行時,桌面會出現類似 CMD 命令的黑色 shell 窗口,十分難看,於是 .pyw 文件就應運而生了。
.pyw 文件與 .pyc 文件的執行,本質上並沒什么區別,只是 .pyw 文件執行的時候不會出現類似 CMD 命令的黑色 shell 窗口。
.pyw 文件格式主要是設計用來運行 Python 純 GUI (圖形用戶界面) 程序的。純 GUI (圖形用戶界面) 程序的用戶不需要看到類似 CMD 命令的黑色 shell 控制台窗口。
當 .pyw 文件運行時,所有 stdout、stderr 輸出無效,所有原 stdin 的讀取只會得到 EOF。
值得一提的是,開發純 GUI (圖形用戶界面) 程序時,可暫時把 .pyw 改成 .py,以便運行時調出控制台窗口,看到所有錯誤信息,方便修改、調試。
注意:采用 PyQt、PySide 等 GUI (圖形用戶界面) 開發框架開發的程序,源文件仍可采用 .py,無需單獨使用 .pyw。
.pyo 文件
"python -O 源文件" 即可將 Python 源程序編譯成 .pyo 文件,但有時仍得采用 .pyc 作后綴,才能正常運行。
.pyo 文件是相對 .pyc 而言的,優化編譯后的 Python 文件。 同樣,.pyo 文件也不能直接用文本編輯器進行編輯。
pyd 文件
.pyd 文件是非 Python,由其它編程語言 "編寫-編譯" 生成的 Python 擴展模塊。
Python 要導入 .pyd 文件,實際上是在 .pyd 文件中封裝了一個 module。在 python 中使用時,把它當成 module 來用就可以了,即:"import 路徑名.modulename" 即可,路徑名為 .pyd 文件所在的路徑。
基於 Qt/C++ 的 PyQt、PySide GUI (圖形用戶界面) 開發框架綁定,會為每個 Qt/C++ 庫 .dll 文件生成一個中間 .pyd 文件。
PyWin32 項目分發包中,也存在很多 MicroSoft Windows OS 相應 .dll 文件的中間 .pyd 文件。
Cython 可將個人基於 Python 語言編寫的 Python 模塊編譯成具有 C 語言特性的 .pyd 文件。
.pyd 文件有時也是用 D 語言按照一定格式編寫,編譯生成的二進制文件。
那么什么是 "D 語言" 呢?它是 C/C++ 的綜合進化版,不僅具有二者的全部優點,且整體性能更佳,但其抽象程度高。
D 語言最初由 Digital Mars 公司就職的 Walter Bright 於 2001 年發布,意圖改進 C++ 語言。目前最新 D 語言被簡稱為 D2。最主要的 D 語言實現是 DMD。
D 語言源自 C/C++,借鑒了眾多編程語言的特色和現代編譯器技術,融會貫通了設計者豐富的實踐經驗,使之具備了非凡的威力 ── 既有 C/C++ 語言的強大威力,
又有 Python 和 Ruby 的開發效率。它集眾多系統級編程所需的功能於一身,
例如垃圾回收、手工內存操作、契約式設計、高級模板技術、內嵌匯編、內置單元測試、Mixin 風格多繼承、類 Java 包管理機制、內置同步機制、內建基本運行時信息。
自定義whl打包 pip install wheel pip install --upgrade setuptools 創建setup.py文件 pip wheel -w, -wheel-dir E:\whl_test\tsdb_model