很多小伙伴在使用python的時候都會感慨:這語言也太好用了吧!但是這么好用的語言他是怎么實現(xiàn)的呢?接下來這篇文章我們不談技術(shù),就來好好聊一下python是怎么實現(xiàn)的。
一門語言的實現(xiàn)往往依賴于另一門語言(除了機器碼),比如說C語言的實現(xiàn)就是由匯編實現(xiàn)的(由匯編語言實現(xiàn)C語言編譯器,然后用編譯器將C語言編譯成匯編語言),匯編語言是由機器語言實現(xiàn)的(匯編語言就是機器語言加上部分助記符),而python這門語言就厲害了,實現(xiàn)python語言的語言有好幾種,接下來我們來看看都有哪些吧。
C語言實現(xiàn)的CPython
所有的python版本中,C語言實現(xiàn)的python被稱為CPython,是使用最廣泛的一個python版本,同時它也是python的官方版本,因此一些新的語言特性也會最先出現(xiàn)在這里。
java實現(xiàn)的JPython
沒想到吧,C語言實現(xiàn)了python,java也能實現(xiàn)python。JPython是python的另一種版本,它相比于CPython而言擁有了更高的與java語言之間的互操作性(畢竟是java實現(xiàn)的),具體表現(xiàn)在它可以直接使用java代碼庫。
JPython最后會將python代碼編譯成java字節(jié)碼(沒錯,jdk也是將java代碼編譯成字節(jié)碼)然后放到j(luò)ava虛擬機內(nèi)解釋執(zhí)行,這就意味著實際上JPython寫的代碼最后和java寫的代碼沒有區(qū)別,只不過源代碼不一樣(可以理解為同樣代碼的不同源代碼實現(xiàn))。
python實現(xiàn)的PyPy
如果你預判到了上面的java實現(xiàn)python的操作的話,那么python實現(xiàn)python你能預判到嗎?其實這也很好理解,在計算機領(lǐng)域有一個名詞叫圖靈完備語言。圖靈完備語言的一個特點就是,可以自己實現(xiàn)自己。比如說你可以使用匯編語言寫一個匯編語言的編譯器,也可以使用C語言寫一個C語言的編譯器(事實上現(xiàn)在的C語言編譯器也確實是用C語言寫的)。而python也是一門圖靈完備語言,所以你可以使用python實現(xiàn)一個python編譯器,然后進行python代碼的編譯(套娃行為)。
其他python語言的實現(xiàn)
實現(xiàn)python的不止只有上面三大語言巨頭,還有一些別的語言,比如使用.NET語言和C#語言實現(xiàn)的python,它的操作和java的操作類似,它也能擁有更好的跟.NET語言的互操作性。還有一種特殊的實現(xiàn)被稱為Stackless,這種實現(xiàn)可以支持更多的線程,但由于小編對這個實現(xiàn)并不是很了解,所以不做深入介紹。
小結(jié)
以上就是python是怎么實現(xiàn)的全部內(nèi)容,更多有趣的python知識可以關(guān)注W3Cschool,小編會堅持給大家分享有趣的python見聞的。