Python的另外幾種語(yǔ)言實(shí)現(xiàn)
Python自身作為一門(mén)編程語(yǔ)言,它有多種實(shí)現(xiàn)。這里的實(shí)現(xiàn)指的是符合Python語(yǔ)言規(guī)范的Python解釋程序以及標(biāo)準(zhǔn)庫(kù)等。這些實(shí)現(xiàn)雖然實(shí)現(xiàn)的是同一種語(yǔ)言,但是彼此之間,特別是與CPython之間還是有些差別的。
下面分別列出幾個(gè)主要的實(shí)現(xiàn)。
1.CPython:這是Python的官方版本,使用C語(yǔ)言實(shí)現(xiàn),使用最為廣泛,新的語(yǔ)言特性一般也最先出現(xiàn)在這里。
CPython實(shí)現(xiàn)會(huì)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運(yùn)行在Python虛擬機(jī)上。
2.Jython:這是Python的Java實(shí)現(xiàn),相比于CPython,它與Java語(yǔ)言之間的互操作性要遠(yuǎn)遠(yuǎn)高于CPython和C語(yǔ)言之間的互操作性。
在Python中可以直接使用Java代碼庫(kù),這使得使用Python可以方便地為Java程序?qū)憸y(cè)試代碼,更進(jìn)一步,可以在Python中使用Swing等圖形庫(kù)編寫(xiě)GUI程序。
Jython會(huì)將Python代碼動(dòng)態(tài)編譯成Java字節(jié)碼,然后在JVM上運(yùn)行轉(zhuǎn)換后的程序,這意味著此時(shí)Python程序與Java程序沒(méi)有區(qū)別,只是源代碼不一樣。
在Python 中寫(xiě)一個(gè)類,像使用Java 類一樣使用這個(gè)類是很容易的事情。
你甚至可以把Jython 腳本靜態(tài)地編譯為Java 字節(jié)碼。
示例代碼:
from java.lang import System System.out.write('Hello World!\n')
3.Python for .NET:它實(shí)質(zhì)上是CPython實(shí)現(xiàn)的.NET托管版本,它與.NET庫(kù)和程序代碼有很好的互操作性。
4.IronPython:不同于Python for .NET,它是Python的C#實(shí)現(xiàn),并且它將Python代碼編譯成C#中間代碼(與Jython類似),然后運(yùn)行,它與.NET語(yǔ)言的互操作性也非常好。
5.PyPy:Python的Python實(shí)現(xiàn)版本,原理是這樣的,PyPy運(yùn)行在CPython(或者其它實(shí)現(xiàn))之上,用戶程序運(yùn)行在PyPy之上。它的一個(gè)目標(biāo)是成為Python語(yǔ)言自身的試驗(yàn)場(chǎng),因?yàn)榭梢院苋菀椎匦薷腜yPy解釋器的實(shí)現(xiàn)(因?yàn)樗鞘褂肞ython寫(xiě)的)。
6.Stackless:CPython的一個(gè)局限就是每個(gè)Python函數(shù)調(diào)用都會(huì)產(chǎn)生一個(gè)C函數(shù)調(diào)用。 這意味著同時(shí)產(chǎn)生的函數(shù)調(diào)用是有限制的,因此Python難以實(shí)現(xiàn)用戶級(jí)的線程庫(kù)和復(fù)雜遞歸應(yīng)用。一旦超越這個(gè)限制,程序就會(huì)崩潰。Stackless的Python實(shí)現(xiàn)突破了這個(gè)限制,一個(gè)C棧幀可以擁有任意數(shù)量的Python棧幀。這樣你就能夠擁有幾乎無(wú)窮的函數(shù)調(diào)用,并能支持巨大數(shù)量的線程。Stackless唯一的問(wèn)題就是它要對(duì)現(xiàn)有的CPython解釋器做重大修改。所以它幾乎是一個(gè)獨(dú)立的分支。另一個(gè)名為Greenlets的項(xiàng)目也支持微線程。它是一個(gè)標(biāo)準(zhǔn)的C擴(kuò)展,因此不需要對(duì)標(biāo)準(zhǔn)Python解釋器做任何修改。
相關(guān)文章
python實(shí)現(xiàn)從web抓取文檔的方法
這篇文章主要介紹了python實(shí)現(xiàn)從web抓取文檔的方法,以抓取人人網(wǎng)頁(yè)面為例講述了完整的web文檔抓取方法,需要的朋友可以參考下2014-09-09Python無(wú)權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式
這篇文章主要介紹了Python無(wú)權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12python實(shí)現(xiàn)愛(ài)奇藝登陸密碼RSA加密的方法示例詳解
這篇文章主要介紹了python實(shí)現(xiàn)愛(ài)奇藝登陸的密碼RSA加密的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05pandas實(shí)現(xiàn)DataFrame顯示最大行列,不省略顯示實(shí)例
今天小編就為大家分享一篇pandas實(shí)現(xiàn)DataFrame顯示最大行列,不省略顯示實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python+OpenCV實(shí)現(xiàn)相機(jī)標(biāo)定的方法詳解
opencv中內(nèi)置了張正友的棋盤(pán)格標(biāo)定法,通過(guò)一些姿態(tài)各異的棋盤(pán)格圖像,可以標(biāo)定相機(jī)的內(nèi)外參數(shù),本文為大家介紹OpenCV進(jìn)行相機(jī)標(biāo)定的具體方法,希望對(duì)大家有所幫助2023-05-05詳解python百行有效代碼實(shí)現(xiàn)漢諾塔小游戲(簡(jiǎn)約版)
這篇文章主要介紹了詳解python百行有效代碼實(shí)現(xiàn)漢諾塔小游戲(簡(jiǎn)約版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10使用Python將數(shù)組的元素導(dǎo)出到變量中(unpacking)
最近工作中遇到一個(gè)問(wèn)題,需要利用Python將數(shù)組(list)或元組(tuple)中的元素導(dǎo)出到N個(gè)變量中,現(xiàn)在將我實(shí)現(xiàn)的方法分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10Python中類的定義、繼承及使用對(duì)象實(shí)例詳解
這篇文章主要介紹了Python中類的定義、繼承及使用對(duì)象,較為詳細(xì)的分析了Python中類的相關(guān)概念與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04