錄播課程和知識付費機構(gòu)入駐教育寶網(wǎng)課平臺
公立私立幼兒園、中小學(xué)、職業(yè)學(xué)校入駐教育寶學(xué)校庫
研學(xué)、周末活動、冬夏令營機構(gòu)入駐研學(xué)活動子平臺
不同的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)系刪除。
點贊
收藏
稍后學(xué)習(xí)規(guī)劃師會與您聯(lián)系,請保證手機暢通