Python的幾種實現

來源:互聯網
上載者:User

Python自身作為一門程式設計語言,它有多種實現。這裡的實現指的是符合Python語言規範的Python解釋程式以及標準庫等。這些實現雖然實現的是同一種語言,但是彼此之間,特別是與CPython之間還是有些差別的。

下面分別列出幾個主要的實現。

1.CPython:這是Python的官方版本,使用C語言實現,使用最為廣泛,新的語言特性一般也最先出現在這裡。

   CPython實現會將源檔案(py檔案)轉換成位元組碼檔案(pyc檔案),然後運行在Python虛擬機器上。

2.Jython:這是Python的Java實現,相比於CPython,它與Java語言之間的互通性要遠遠高於CPython和C語言之間的互通性。

   在Python中可以直接使用Java程式碼程式庫,這使得使用Python可以方便地為Java程式寫測試代碼,更進一步,可以在Python中使用Swing等圖形庫編寫GUI程式。

   Jython會將Python代碼動態編譯成Java位元組碼,然後在JVM上運行轉換後的程式,這意味著此時Python程式與Java程式沒有區別,只是原始碼不一樣。

   在Python 中寫一個類,像使用Java 類一樣使用這個類是很容易的事情。

   你甚至可以把Jython 指令碼靜態地編譯為Java 位元組碼。

   範例程式碼:

from java.lang import SystemSystem.out.write('Hello World!\n')

3.Python for .NET:它實質上是CPython實現的.NET託管版本,它與.NET庫和程式碼有很好的互通性。

4.IronPython:不同於Python for .NET,它是Python的C#實現,並且它將Python代碼編譯成C#中間代碼(與Jython類似),然後運行,它與.NET語言的互通性也非常好。

5.PyPy:Python的Python實現版本,原理是這樣的,PyPy運行在CPython(或者其它實現)之上,使用者程式運行在PyPy之上。它的一個目標是成為Python語言自身的實驗場,因為可以很容易地修改PyPy解譯器的實現(因為它是使用Python寫的)。

6.Stackless:CPython的一個局限就是每個Python函數調用都會產生一個C函數調用。 這意味著同時產生的函數調用是有限制的,因此Python難以實現使用者級的線程庫和複雜遞迴應用。一旦超越這個限制,程式就會崩潰。Stackless的Python實現突破了這個限制,一個C棧幀可以擁有任意數量的Python棧幀。這樣你就能夠擁有幾乎無窮的函數調用,並能支援巨大數量的線程。Stackless唯一的問題就是它要對現有的CPython解譯器做重大修改。所以它幾乎是一個獨立的分支。另一個名為Greenlets的項目也支援微線程。它是一個標準的C擴充,因此不需要對標準Python解譯器做任何修改。

下面的這篇文章對Stackless做了比較多的介紹,但是也比較難以讀懂:

可愛的 Python:Python實現內幕

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.