當Python運行腳本時,在代碼開始進行處理之前,Python還會執行一些步驟。(推薦學習:Python視頻教程)
第一步是編譯成所謂的“字節碼”,如果Python進程擁有寫入權限,將把程序的字節碼保存為一個以.pyc為擴展名的文件, 如果Python無法在機器上寫入字節碼,程序仍然可以工作:字節碼將會在內存中生成并在程序結束時簡單地丟棄。一旦程序編譯成字節碼(或字節碼從已經存在的.pyc文件中載入),之后的字節碼發送到通常稱為Python虛擬機(Python VirtualMachine,簡寫為PVM)上來執行。
寫完的py文件,首先被翻譯成字節碼文件(隱藏后綴pyc),然后在用PVM(虛擬機)把字節碼自動編譯,之后解釋到硬件。
如果已經形成過pyc文件,那么你的py文件沒有改動,機器重新解釋的時候會跳過翻譯字節碼步驟,首先查看你的.py跟.pyc文件時間戳,如果沒有修改那么直接運行pyc文件,否則會重新翻譯字節碼。
PVM不是一個獨立的程序,是Python的運行引擎,不需要安裝。事實上PVM就是迭代運行字節碼指令的一個大循環,一個接一個地完成操作。
因此Python具有更多的動態語言特性:在運行時,Python程序去構建并執行另一個Python程序是有可能的,而且往往是非常方便的。例如,eval和exec內置模塊,能夠接受并運行包含Python程序代碼的字符串。使用如下代碼可以查看add函數的字節碼:
import dis def add(a,b): sum=a+b return sum print(dis.dis(add))
更多Python相關技術文章,請訪問Python教程欄目進行學習!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com