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

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

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

不同的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)系刪除。

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

點(diǎn)贊

收藏

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