標籤:

Python 家族有多龐大

導讀:眾所周知,Python 是廣泛用於通用編程的高級編程語言。但是談論 Python 我們不僅意味著語言,還包括其實現,因為 Python 實際上是可以以許多不同方式實現的語言的規範。Python 的解釋器可用於許多操作系統,以便其代碼可以運行在各種各樣的操作系統上。

在這裡,我們想通過介紹一些 Python 的實現,來說明者真的是一個龐大的家族。

CPython

CPython 被認為是用 C 編寫的 Python 的「默認」實現,該實現將 Python 代碼編譯為中間位元組碼,最後由虛擬機解釋執行。CPython 使得編寫 C 擴展非常容易,因為最終 Python 代碼由 C 語言解釋器執行。

CPython 提供與 Python 軟體包和 C 擴展模塊最高級別的兼容性。

如果你正在編寫一個開源的 Python 項目,CPython 是最好的選擇,你的目標是大規模地吸引用戶,而且它也是唯一可以使用 C 擴展功能的軟體包。

Jython

Jython 是一個可以和 Java 程序一起運行的 Python 實現。Python 代碼被它編譯為 Java 位元組碼,然後由 Java 虛擬機即 JVM 執行。

此外,可以不用花費太多力氣就可以導入任何 Java 類。

Jython 絕對是你正在尋求與現有 Java 代碼庫進行介面鏈接或者需要為 JVM 編寫 Python 代碼的任何其他原因的主要選擇。

IronPython

IronPython 也是普及的 Python 實現之一,它以 .NET 框架庫為目標,並且完全用C#編寫。

它在 .NET 虛擬機上運行,與 JVM 相當,可以將 .NET 代碼暴露給 .NET 框架中的其他語言, IronPython 支持 Python 2.7。

這是 Windows 開發人員的理想選擇,因為 IronPython 通過 Visual Studio 的 Python 工具直接集成到 Visual Studio 開發環境中。(VS 大法強無敵)

PyPy

PyPy 是將 JIT(即時編譯器)帶入 Python 的一種實現。它可能有些不好理解。

Pypy 其實是兩個東西。一方面,它是一個用 RPython 編寫的 Python 解釋器,它是具有靜態類型的 Python 的一個子集;但是另一方面,它也是一個編譯器,用於在 JIT 中編譯各種目標的 RPython 代碼,其默認平台為 C,但也支持 JVM 或者其他。這樣一來,PyPy 可以動態地將 JIT 添加到解釋器中,生成自己的編譯器。 因此,結果是獨立的可執行文件,這些可執行文件可以解釋 Python 源代碼並利用 JIT 優化。

如果你需要為自己的 Python 代碼增加的性能,Pypy 值得一試。它目前比 CPython 快 5 倍以上,並且支持 Python 2 和 Python 3。

PythonNet

Python for .NET 是一個提供與 .NET 公共語言運行時(CLR)無縫集成的軟體包。該軟體包允許使用以任何語言編寫的 .NET 服務和組件(以託管C ++,C#,VB,JScript)為基礎構建整個應用程序。它為 .NET 開發人員提供了強大的應用程序腳本工具,允許使用 CLR 服務,並可以繼續使用現有的 Python 代碼和基於 C 的擴展,同時維護 Python 代碼的本機執行速度。

Python for .NET 使用標準的 CPython 運行時,很方便就可以將 .NET 中的一個或兩個組件集成到標準的 Python 應用程序中,但是它不會從 Python 代碼產生託管代碼(IL)。

Python for .NET 是根據開源 MIT 許可證發布的,並支持從 Python 2.6 到 Python 3.5 和 3.6,除了 IronPython 之外,它都可以沒有衝突地運行。

Cython

Cython 是一個包括綁定到調用 C 函數靜態編譯器,它用於 Python 編程語言和擴展 Cython 編程語言(基於Pyrex)。

Cyton 允許輕鬆編寫 Python 代碼的 C 擴展,還可以在現有的 Python 代碼中添加靜態類型,但是在這裡你必須強制輸入用戶的代碼,然後將其傳遞給編譯器(類似於 Pypy,但不完全)。

Cython 是可以用於快速 C 模塊的理想語言,可以加速執行 Python 代碼,包裝外部 C 庫並將CPython 嵌入到現有應用程序中。

MicroPython

MicroPython 是 Python 3 的高效實現,一個用 C99 編寫的完整的 Python 編譯器和運行時。 它在受限環境中的微控制器上運行,並且包含了 Python 標準庫的一小部分,它是一個互動式提示命令(REPL,a.k.a. Read-eval-print 循環),能夠立即執行命令。

MicroPython 是由一個緊湊的電子電路板的 MicroPython pyboard 在裸機上運行的。因此,你可以獲得一個低級別的 Python 操作系統,除了能夠從內置文件系統運行和導入腳本之外,還可以方便地控制各種電子項目。

這種實現充滿了先進的功能,而且由於採用了許多先進的編碼技術,它的結構緊湊。它的目標是與普通 Python 儘可能兼容。

結論

您可以看到,有相當多的 Python 實現使得 Python 家族如此廣泛和多樣化,而且還有更多的通用命名和通用引用「Python」工具可以有完全不同的用途。

原文:How big is the Python Family

擴展閱讀:

  • 2017 年你應該學習一下下函數式編程
  • 「機器學習」和「深度學習」的 Cheat Sheets

歡迎關注

  • 知乎專欄「極光日報」,每天為 Makers 導讀三篇優質英文文章。
  • 網易雲電台「極光日報」,上下班路上為你讀報。
  • 微信公眾號「極光開發者」,每周兩篇技術類乾貨。

推薦閱讀:

Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
Flask 實現小說網站 (二)
Python實現3D建模工具
Flask模板引擎:Jinja2語法介紹
OpenCV:圖片操作基本知識(二)

TAG:Python |