python代碼是如何運(yùn)行的

這篇文章給大家分享的是有關(guān)python代碼是如何運(yùn)行的的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的新民網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

python作為一種動(dòng)態(tài)語(yǔ)言,其實(shí)是一個(gè)解釋器軟件包。當(dāng)Python運(yùn)行腳本時(shí),在代碼開始進(jìn)行處理之前,Python還會(huì)執(zhí)行一些步驟。第一步是編譯成所謂的“字節(jié)碼”,如果Python進(jìn)程擁有寫入權(quán)限,將把程序的字節(jié)碼保存為一個(gè)以.pyc為擴(kuò)展名的文件, 如果Python無(wú)法在機(jī)器上寫入字節(jié)碼,程序仍然可以工作:字節(jié)碼將會(huì)在內(nèi)存中生成并在程序結(jié)束時(shí)簡(jiǎn)單地丟棄。一旦程序編譯成字節(jié)碼(或字節(jié)碼從已經(jīng)存在的.pyc文件中載入),之后的字節(jié)碼發(fā)送到通常稱為Python虛擬機(jī)(Python VirtualMachine,簡(jiǎn)寫為PVM)上來(lái)執(zhí)行。PVM不是一個(gè)獨(dú)立的程序,是Python的運(yùn)行引擎,不需要安裝。事實(shí)上PVM就是迭代運(yùn)行字節(jié)碼指令的一個(gè)大循環(huán),一個(gè)接一個(gè)地完成操作。

python學(xué)習(xí)網(wǎng),大量的免費(fèi)python視頻教程,歡迎在線學(xué)習(xí)!

因此Python具有更多的動(dòng)態(tài)語(yǔ)言特性:在運(yùn)行時(shí),Python程序去構(gòu)建并執(zhí)行另一個(gè)Python程序是有可能的,而且往往是非常方便的。例如,eval和exec內(nèi)置模塊,能夠接受并運(yùn)行包含Python程序代碼的字符串。使用如下代碼可以查看add函數(shù)的字節(jié)碼:

import dis

def add(a,b):
    sum=a+b
    return sum

print(dis.dis(add))

主要的python解釋器

CPython

當(dāng)我們從Python官方網(wǎng)站下載并安裝好Python 3.x后,我們就直接獲得了一個(gè)官方版本的解釋器:CPython。這個(gè)解釋器是用C語(yǔ)言開發(fā)的,所以叫CPython。在命令行下運(yùn)行python就是啟動(dòng)CPython解釋器。CPython是使用最廣的Python解釋器,也是默認(rèn)的python解釋器。

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é)果。

Jython

Jython是運(yùn)行在Java平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。Jython腳本可以應(yīng)用于開發(fā)Web applet和servlet,建立基于Java的GUI。此外,Jython具有集成支持的功能,允許導(dǎo)入Python代碼或使用Java的類。因?yàn)镴ython要比CPython慢而且也不夠健壯,它往往看做是一個(gè)主要面向?qū)ふ襃ava代碼前端腳本語(yǔ)言的Java開發(fā)者的一個(gè)有趣的工具。

IronPython

IronPython和Jython類似,只不過(guò)IronPython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。

生成獨(dú)立運(yùn)行程序

借助一些第三方工具Python程序可以生成獨(dú)立的可執(zhí)行二進(jìn)制代碼文件進(jìn)行分發(fā)。這些第三方工具能夠?qū)⒊绦虻淖止?jié)碼、PVM(解釋器)以及任何程序所需要的Python支持文件捆綁在一起形成一個(gè)單獨(dú)的文件。,主要有三種工具:py2exe(Windows下使用)、PyInstaller(和py2exe類似,它能夠在Linux及UNIX上使用,并且能夠生成自安裝的獨(dú)立執(zhí)行程序)以及freeze(最初始的版本)。

感謝各位的閱讀!關(guān)于python代碼是如何運(yùn)行的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

名稱欄目:python代碼是如何運(yùn)行的
網(wǎng)站地址:http://muchs.cn/article16/ghgdgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司面包屑導(dǎo)航、電子商務(wù)品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)