教培機(jī)構(gòu)入駐教育寶平臺(tái)、搭建私域流量運(yùn)營系統(tǒng)及官網(wǎng)
錄播課程和知識(shí)付費(fèi)機(jī)構(gòu)入駐教育寶網(wǎng)課平臺(tái)
公立私立幼兒園、中小學(xué)、職業(yè)學(xué)校入駐教育寶學(xué)校庫
研學(xué)、周末活動(dòng)、冬夏令營機(jī)構(gòu)入駐研學(xué)活動(dòng)子平臺(tái)
不同的Python實(shí)現(xiàn)方式之間是有區(qū)別的。Python從2017年開始受到關(guān)注和追捧,它與高科技人工智能有關(guān),但python是什么?python能做什么?似乎是*熱門的話題。這里我先解釋一下:
python是什么:其實(shí)python是一種面向?qū)ο蟮慕忉屝杂?jì)算機(jī)編程語言,擁有豐富而強(qiáng)大的庫。該語言因其簡單性、可讀性和可擴(kuò)展性而廣受歡迎。
python能做什么:python可以用于圖形處理、數(shù)學(xué)處理、文本處理、數(shù)據(jù)庫編程、網(wǎng)絡(luò)編程、Web編程、多媒體應(yīng)用、pymo引擎、黑客編程、用Python寫簡單爬蟲、人工智能等等。
所以我們說Python的時(shí)候,一般指的是CPPython。但Python其實(shí)是一種語言規(guī)范,它只定義了Python應(yīng)該具備什么語言元素,應(yīng)該完成什么任務(wù)。這個(gè)語言規(guī)范可以用不同的方式實(shí)現(xiàn),比如C,C++,Java,C#,JavaScript,甚至Python本身。本文是對(duì)不同Python實(shí)現(xiàn)的簡單介紹和比較,以后還會(huì)繼續(xù)擴(kuò)展。
CPython.
CPython是標(biāo)準(zhǔn)Python,是其他Python編譯器的參考實(shí)現(xiàn)。一般來說,“Python”這個(gè)詞指的是CPython。
CPython是用c寫的,c把Python源代碼編譯成CPython字節(jié)碼,由虛擬機(jī)解釋執(zhí)行。不使用JIT等技術(shù),垃圾收集使用引用計(jì)數(shù)。
所以,當(dāng)有人問Python解釋執(zhí)行還是編譯執(zhí)行,答案可以是這樣的:Python(CPython)將Python源代碼編譯成CPPython字節(jié)碼,然后虛擬機(jī)解釋執(zhí)行這些字節(jié)碼。
如果你需要大量使用C寫的第三方擴(kuò)展,或者讓大部分用戶直接使用你的Python代碼,那就改用CPPython。
Jython.
Python由Jython在JVM上實(shí)現(xiàn),Java編寫。Jython將Python源代碼編譯成JVM字節(jié)碼,JVM執(zhí)行相應(yīng)的字節(jié)碼。所以可以很好的和JVM集成,比如利用JVM的垃圾收集和JIT直接在JVM上導(dǎo)入和調(diào)用其他語言編寫的庫和函數(shù)。
對(duì)于希望使用Python簡化JVM上的工作流程,或者由于某些原因需要使用Python語言的Java相關(guān)代碼的用戶,強(qiáng)烈推薦使用Jython,不要使用太多的CPPython擴(kuò)展。
IronPython.
IronPython和Jython類似,不同的是IronPython在CLR中實(shí)現(xiàn)Python,面向。NET平臺(tái),用C#編寫。
IronPython將源代碼編譯成TODOCLR,也可以很好地與。.NET平臺(tái)。也就是說,像Jython一樣,它可以使用JIT、垃圾收集和。NET框架來導(dǎo)入和調(diào)用用其他語言編寫的庫和函數(shù)。.NET。IronPython默認(rèn)使用Unicode字符串。
此外,PythonToolsforVisualStudio可以將CPython和IronPython無縫集成到vs中。如果只需要在Windows上開發(fā)大型Python項(xiàng)目。在條件允許的情況下,IronPython是一個(gè)不錯(cuò)的選擇。
PyPy.
這里的PyPy指的是RPython和TracingJIT技術(shù)實(shí)現(xiàn)的Python,而不是RPython工具鏈。PyPy可以選擇多種垃圾收集方式,比如標(biāo)簽移除、標(biāo)簽壓縮、生成等等。
對(duì)于CPython來說,PyPy的性能明顯提高了,但是對(duì)第三方模塊的支持真的很弱。比如CPythonCAPI寫的擴(kuò)展不能很好的支持,SWIG,SIP等工具寫的擴(kuò)展根本不能支持。甚至NumPy都要在編譯器級(jí)別從頭實(shí)現(xiàn)。即使實(shí)現(xiàn)了,也只能在Python級(jí)別使用,不能在非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實(shí)現(xiàn),以及它們之間的區(qū)別。他們之間也有一些區(qū)別和區(qū)別,比如Cython,Brython,RubyPython。
*文章內(nèi)容和圖片均來源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪除。
點(diǎn)贊
收藏
稍后學(xué)習(xí)規(guī)劃師會(huì)與您聯(lián)系,請保證手機(jī)暢通