Python 本身只是一種程式設計語言規範,可以使用其它程式語言實現它或擴充套件它;譬如:採有 Python C Java .Net 等重實現 Python,而採用 Python C/C++ C# Java .Net 等擴充套件 Python 實現。

但不管採用哪種程式語言實現 Python,都會基本遵守 Python 語言規範並帶有常用 Python 內建函式及標準庫模組。

替代實現

由官方維護的 CPython 是基於 C 程式語言實現的 Python,直譯器採用 C 程式語言實現,也是最流行、相容性最強的 Python 實現。最新版本支援 Python 3.9.7,Python 2.7.18 已於 2020 年停止維護。

由 Python 程式語言實現的 Python 稱為 PyPy,直譯器採用 Python 程式語言實現;具有無堆疊支援和即時編譯器,官方稱比 CPython 平均快 4.2 倍。最新版本支援 Python 3.7,穩定版本支援 Python 2.7.18。

由 .Net 程式語言實現的 Python 稱為 IronPython,直譯器採用 .Net 程式語言實現;IronPython 會生成 IL 中間語言,並將 Python 程式碼編譯成 .NET 彙編。最新版本支援 Python 3.4,穩定版本支援 Python 2.7.18。

MicroPython 也是以 C 程式語言實現的 Python,主要用於物聯網 MCU (微控制單元,又稱微控制器);但對 Python 做了大量簡化,最新版本支援 Python 3.4。

由 Java 程式語言實現的 Python 稱為 Jython,直譯器採用 Java 程式語言實現。Jython 穩定版支援 Python 2.7.18。

Python for .NET 是基於 CPython 實現的另一實現,但它可管理 .NET 應用程式並使 .NET 庫可用。

Cython 0.29.6 中文文件編制

採用 Cython 擴充套件模組

這幾年很流行,因為其採用類似 Python 的語法,按近似 C 的執行效率擴充套件 CPython 實現。

Cython 可以將現成 Python 程式語言編寫的模組,轉換成 C 中間程式碼,最後編譯生成 *.PYD 模組,效率能提升 20%-50%。

Cython 常用於將類似 Python 語法編寫的 *.PYX 擴充套件模組,轉換成 C 中間程式碼,最後編譯生成 *.PYD 模組,效率常能提升幾倍以上 (執行效率接近於 C 語言)。

採用 Python 擴充套件模組

採用 Python 程式語言擴充套件 Python 的最出名開源工程是 PyPy。

當然,為改善 Python 本身的侷限性,擴充套件其相容性,有時還會採用 C/C++、C#、Java、.Net 等程式語言混合程式設計。

大家平時使用的大部分 CPython 擴充套件模組,也主要採用這種方式實現,主要因為其相對簡單、成本低、效率高、可跨平臺,還有相容性強、現成模組多。

採用 C/C++ 擴充套件模組

即採用 C/C++ 程式語言擴充套件 Python,主要用於 CPython 實現;因為 CPython 實現底層就是採用 C 程式語言實現的。

但需要符合 CPython C/C++ API 規範 要求,且需編譯生成 *.PYD 模組文件。


掃一掃關注 德雲社群 微信公眾號