我們現在知道了Python是一門解釋型語言,代碼想運行,必須通過解釋器執行,Python的解釋器本身也可以看作是個程式(翻譯官司是哪國人不重要),這個程式是什麼語言開發的呢? 答案是好幾種語言? what? 因為Python有好幾種解釋器,分別基於不同語言開發,每個解釋器特點不同,但都能正常運行我們 ...
我們現在知道了Python是一門解釋型語言,代碼想運行,必須通過解釋器執行,Python的解釋器本身也可以看作是個程式(翻譯官司是哪國人不重要),這個程式是什麼語言開發的呢? 答案是好幾種語言? what? 因為Python有好幾種解釋器,分別基於不同語言開發,每個解釋器特點不同,但都能正常運行我們的Python代碼,下麵分別來看下:
CPython
當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。
CPython是使用最廣且被的Python解釋器。教程的所有代碼也都在CPython下執行。
IPython
IPython是基於CPython之上的一個互動式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調用了IE。
CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。
PyPy
PyPy是另一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(註意不是解釋),所以可以顯著提高Python代碼的執行速度。
絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。如果你的代碼要放到PyPy下執行,就需要瞭解PyPy和CPython的不同點。
Jython
Jython是運行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java位元組碼執行。
IronPython
IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的位元組碼
解釋:
總之:python 2.x是遺留的,python 3.x是該語言的現在和未來
python 3.0於2008年發佈。最終的2.x版本2.7發佈於2010年年中,聲明瞭
延長了對這個壽命結束的版本的支持。2.x分支之後將看不到新的主要版本。3、X是
正在積極開發中,已經有五年多的穩定版本,包括2012年的3.3版,
2014年為3.4,2015年為3.5。這意味著,所有最近的標準庫改進,例如,只是
在python 3.x中預設可用。
guido van rossum(Python語言的原始創建者)決定正確地清理python 2.x,與2.x範圍內的新版本相比,在向後相容性方面考慮的更少。最大的改進是更好的Unicode支持(預設情況下,所有文本字元串都是Unicode)以及更健全的位元組/Unicode分離。
此外,核心語言的幾個方面(如print和exec being語句、使用floor division的整數)已經被調整,以便新來者更容易學習並與語言的其餘部分更一致,並且舊的cruft已經被刪除(例如,所有類現在都是新的樣式,“range()”返回一個記憶體高效的itera表,不是2.x中的列表)。