Python資料庫
輸入機構/課程/服務名稱

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

2021-12-07 更新
# IT技術培訓 # 軟件開發(fā) # Python

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


python是什么:其實python是一種面向對象的解釋性計算機編程語言,擁有豐富而強大的庫。該語言因其簡單性、可讀性和可擴展性而廣受歡迎。


python能做什么:python可以用于圖形處理、數學處理、文本處理、數據庫編程、網絡編程、Web編程、多媒體應用、pymo引擎、黑客編程、用Python寫簡單爬蟲、人工智能等等。


所以我們說Python的時候,一般指的是CPPython。但Python其實是一種語言規(guī)范,它只定義了Python應該具備什么語言元素,應該完成什么任務。這個語言規(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等技術,垃圾收集使用引用計數。


所以,當有人問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í)行相應的字節(jié)碼。所以可以很好的和JVM集成,比如利用JVM的垃圾收集和JIT直接在JVM上導入和調用其他語言編寫的庫和函數。


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


IronPython.

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


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


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


PyPy.

這里的PyPy指的是RPython和TracingJIT技術實現(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技術。Pyston使用像JavaScriptV8那樣的多層編譯,其中LLVM也是用來優(yōu)化代碼的。Pyston在發(fā)展,不成熟。但是它的前景很有希望。


總結一下

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


*文章內容和圖片均來源于網絡,如有侵權,請聯(lián)系刪除。

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

點贊

收藏

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