App下載

python是怎么實(shí)現(xiàn)的?python實(shí)現(xiàn)方式介紹

猿友 2021-07-21 18:04:51 瀏覽數(shù) (4585)
反饋

很多小伙伴在使用python的時(shí)候都會(huì)感慨:這語言也太好用了吧!但是這么好用的語言他是怎么實(shí)現(xiàn)的呢?接下來這篇文章我們不談技術(shù),就來好好聊一下python是怎么實(shí)現(xiàn)的。

一門語言的實(shí)現(xiàn)往往依賴于另一門語言(除了機(jī)器碼),比如說C語言的實(shí)現(xiàn)就是由匯編實(shí)現(xiàn)的(由匯編語言實(shí)現(xiàn)C語言編譯器,然后用編譯器將C語言編譯成匯編語言),匯編語言是由機(jī)器語言實(shí)現(xiàn)的(匯編語言就是機(jī)器語言加上部分助記符),而python這門語言就厲害了,實(shí)現(xiàn)python語言的語言有好幾種,接下來我們來看看都有哪些吧。

C語言實(shí)現(xiàn)的CPython

所有的python版本中,C語言實(shí)現(xiàn)的python被稱為CPython,是使用最廣泛的一個(gè)python版本,同時(shí)它也是python的官方版本,因此一些新的語言特性也會(huì)最先出現(xiàn)在這里。

java實(shí)現(xiàn)的JPython

沒想到吧,C語言實(shí)現(xiàn)了python,java也能實(shí)現(xiàn)python。JPython是python的另一種版本,它相比于CPython而言擁有了更高的與java語言之間的互操作性(畢竟是java實(shí)現(xiàn)的),具體表現(xiàn)在它可以直接使用java代碼庫。

 JPython最后會(huì)將python代碼編譯成java字節(jié)碼(沒錯(cuò),jdk也是將java代碼編譯成字節(jié)碼)然后放到j(luò)ava虛擬機(jī)內(nèi)解釋執(zhí)行,這就意味著實(shí)際上JPython寫的代碼最后和java寫的代碼沒有區(qū)別,只不過源代碼不一樣(可以理解為同樣代碼的不同源代碼實(shí)現(xiàn))。

python實(shí)現(xiàn)的PyPy

如果你預(yù)判到了上面的java實(shí)現(xiàn)python的操作的話,那么python實(shí)現(xiàn)python你能預(yù)判到嗎?其實(shí)這也很好理解,在計(jì)算機(jī)領(lǐng)域有一個(gè)名詞叫圖靈完備語言。圖靈完備語言的一個(gè)特點(diǎn)就是,可以自己實(shí)現(xiàn)自己。比如說你可以使用匯編語言寫一個(gè)匯編語言的編譯器,也可以使用C語言寫一個(gè)C語言的編譯器(事實(shí)上現(xiàn)在的C語言編譯器也確實(shí)是用C語言寫的)。而python也是一門圖靈完備語言,所以你可以使用python實(shí)現(xiàn)一個(gè)python編譯器,然后進(jìn)行python代碼的編譯(套娃行為)。

其他python語言的實(shí)現(xiàn)

實(shí)現(xiàn)python的不止只有上面三大語言巨頭,還有一些別的語言,比如使用.NET語言和C#語言實(shí)現(xiàn)的python,它的操作和java的操作類似,它也能擁有更好的跟.NET語言的互操作性。還有一種特殊的實(shí)現(xiàn)被稱為Stackless,這種實(shí)現(xiàn)可以支持更多的線程,但由于小編對(duì)這個(gè)實(shí)現(xiàn)并不是很了解,所以不做深入介紹。

小結(jié)

以上就是python是怎么實(shí)現(xiàn)的全部?jī)?nèi)容,更多有趣的python知識(shí)可以關(guān)注W3Cschool,小編會(huì)堅(jiān)持給大家分享有趣的python見聞的。


0 人點(diǎn)贊