一后豫、什么是解釋
當(dāng)我們編寫Python代碼時(shí)悉尾,我們得到的是一個(gè)包含Python代碼的以
.py
為擴(kuò)展名的文本文件。要運(yùn)行代碼挫酿,就需要Python解釋器去執(zhí)行.py
文件构眯。由于整個(gè)Python語(yǔ)言從規(guī)范到解釋器都是開(kāi)源的,所以理論上早龟,只要水平夠高惫霸,任何人都可以編寫Python解釋器來(lái)執(zhí)行Python代碼猫缭。所以存在多種Python解釋器。image
二壹店、CPython
CPython是Python的參考實(shí)現(xiàn)猜丹,用C編寫的。它把Python代碼編譯成中間態(tài)的字節(jié)碼硅卢,然后由虛擬機(jī)解釋射窒。CPython為Python包和C擴(kuò)展模塊提供了最大限度的兼容。如果你正在寫開(kāi)源的Python代碼将塑,并希望有盡可能廣泛的用戶脉顿,用CPython是最好的。用依賴于C擴(kuò)展的包点寥,CPython是你唯一的選擇弊予。所有版本的Python語(yǔ)言都用C實(shí)現(xiàn),因?yàn)镃Python是參考實(shí)現(xiàn)
三开财、IPython
IPython是基于CPython之上的一個(gè)交互式解釋器汉柒,也就是說(shuō),IPython只是在交互方式上有所增強(qiáng)责鳍,但是執(zhí)行Python代碼的功能和CPython是完全一樣的碾褂。好比很多國(guó)產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實(shí)都是調(diào)用了IE历葛。CPython用
>>>
作為提示符正塌,而IPython用In [序號(hào)]:
作為提示符。
四恤溶、PyPy
PyPy是另一個(gè)Python解釋器乓诽,它的目標(biāo)是執(zhí)行速度。PyPy采用JIT技術(shù)咒程,對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋)鸠天,所以可以顯著提高Python代碼的執(zhí)行速度。
絕大部分Python代碼都可以在PyPy下運(yùn)行帐姻,但是PyPy和CPython有一些是不同的稠集,這就導(dǎo)致相同的Python代碼在兩種解釋器下執(zhí)行可能會(huì)有不同的結(jié)果。如果你的代碼要放到PyPy下執(zhí)行饥瓷,就需要了解[PyPy和CPython的不同點(diǎn)剥纷。
五、Jython
Jython是運(yùn)行在Java平臺(tái)上的Python解釋器呢铆,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行晦鞋。
六、IronPython
IronPython和Jython類似,只不過(guò)IronPython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器悠垛,可以直接把Python代碼編譯成.Net的字節(jié)碼线定。
七、小結(jié)
Python的解釋器很多鼎文,但使用最廣泛的還是CPython渔肩。如果要和Java或.Net平臺(tái)交互,最好的辦法不是用Jython或IronPython拇惋,而是通過(guò)網(wǎng)絡(luò)調(diào)用來(lái)交互周偎,確保各程序之間的獨(dú)立性。