Python資料庫
輸入機構(gòu)/課程/服務(wù)名稱

不同的Python實現(xiàn)方式的區(qū)別

2021-12-07 10:50:18
# IT技術(shù)培訓(xùn) # 軟件開發(fā) # Python

不同的Python實現(xiàn)方式之間是有區(qū)別的。Python從2017年開始受到關(guān)注和追捧,它與高科技人工智能有關(guān),但python是什么?python能做什么?似乎是*熱門的話題。這里我先解釋一下:


python是什么:其實python是一種面向?qū)ο蟮慕忉屝杂嬎銠C編程語言,擁有豐富而強大的庫。該語言因其簡單性、可讀性和可擴展性而廣受歡迎。


python能做什么:python可以用于圖形處理、數(shù)學(xué)處理、文本處理、數(shù)據(jù)庫編程、網(wǎng)絡(luò)編程、Web編程、多媒體應(yīng)用、pymo引擎、黑客編程、用Python寫簡單爬蟲、人工智能等等。


所以我們說Python的時候,一般指的是CPPython。但Python其實是一種語言規(guī)范,它只定義了Python應(yīng)該具備什么語言元素,應(yīng)該完成什么任務(wù)。這個語言規(guī)范可以用不同的方式實現(xiàn),比如C,C++,Java,C#,JavaScript,甚至Python本身。本文是對不同Python實現(xiàn)的簡單介紹和比較,以后還會繼續(xù)擴展。


CPython.

CPython是標準Python,是其他Python編譯器的參考實現(xiàn)。一般來說,“Python”這個詞指的是CPython。


CPython是用c寫的,c把Python源代碼編譯成CPython字節(jié)碼,由虛擬機解釋執(zhí)行。不使用JIT等技術(shù),垃圾收集使用引用計數(shù)。


所以,當有人問Python解釋執(zhí)行還是編譯執(zhí)行,答案可以是這樣的:Python(CPython)將Python源代碼編譯成CPPython字節(jié)碼,然后虛擬機解釋執(zhí)行這些字節(jié)碼。


如果你需要大量使用C寫的第三方擴展,或者讓大部分用戶直接使用你的Python代碼,那就改用CPPython。


Jython.

Python由Jython在JVM上實現(xiàn),Java編寫。Jython將Python源代碼編譯成JVM字節(jié)碼,JVM執(zhí)行相應(yīng)的字節(jié)碼。所以可以很好的和JVM集成,比如利用JVM的垃圾收集和JIT直接在JVM上導(dǎo)入和調(diào)用其他語言編寫的庫和函數(shù)。


對于希望使用Python簡化JVM上的工作流程,或者由于某些原因需要使用Python語言的Java相關(guān)代碼的用戶,強烈推薦使用Jython,不要使用太多的CPPython擴展。


IronPython.

IronPython和Jython類似,不同的是IronPython在CLR中實現(xiàn)Python,面向。NET平臺,用C#編寫。


IronPython將源代碼編譯成TODOCLR,也可以很好地與。.NET平臺。也就是說,像Jython一樣,它可以使用JIT、垃圾收集和。NET框架來導(dǎo)入和調(diào)用用其他語言編寫的庫和函數(shù)。.NET。IronPython默認使用Unicode字符串。


此外,PythonToolsforVisualStudio可以將CPython和IronPython無縫集成到vs中。如果只需要在Windows上開發(fā)大型Python項目。在條件允許的情況下,IronPython是一個不錯的選擇。


PyPy.

這里的PyPy指的是RPython和TracingJIT技術(shù)實現(xiàn)的Python,而不是RPython工具鏈。PyPy可以選擇多種垃圾收集方式,比如標簽移除、標簽壓縮、生成等等。


對于CPython來說,PyPy的性能明顯提高了,但是對第三方模塊的支持真的很弱。比如CPythonCAPI寫的擴展不能很好的支持,SWIG,SIP等工具寫的擴展根本不能支持。甚至NumPy都要在編譯器級別從頭實現(xiàn)。即使實現(xiàn)了,也只能在Python級別使用,不能在非Python環(huán)境下被其他第三方模塊使用。


皮斯頓.

Pyston是Dropbox開發(fā)的,用C++11編寫,采用了一次一法-JIT和MarkSweep-StoptheWorld的GC技術(shù)。Pyston使用像JavaScriptV8那樣的多層編譯,其中LLVM也是用來優(yōu)化代碼的。Pyston在發(fā)展,不成熟。但是它的前景很有希望。


總結(jié)一下

在了解python是什么,python能做什么的基礎(chǔ)上,相信大家已經(jīng)了解了這些主要的python實現(xiàn),以及它們之間的區(qū)別。他們之間也有一些區(qū)別和區(qū)別,比如Cython,Brython,RubyPython。


*文章內(nèi)容和圖片均來源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪除。

查看剩余內(nèi)容
loading
Hi,我是教育寶平臺顧問 添加我的微信,在查找或下載資料時,有任何問題,我會隨時為您解決~
loading
掃描二維碼 添加顧問微信

點贊

收藏

資深學(xué)習(xí)規(guī)劃師,免費幫您答疑解惑,定制學(xué)習(xí)方案
限時免費咨詢
教育寶IT技術(shù)頻道
教育寶致力于打造中國最專業(yè)的IT技術(shù)學(xué)習(xí)平臺,為IT技術(shù)學(xué)員、教育機構(gòu)、從業(yè)者和上下游搭建連接、互動、交流和賦能平臺。