python是解釋型還是編譯型


參考借鑒了一些網絡上的文章,大概搞清楚python的執行過程。

python是解釋型還是編譯型

Python和Java/C#一樣,也是一門基於虛擬機的語言,先來從表面上簡單地了解一下Python程序的運行過程。

在命令行中輸入python hello.py時,其實是激活了Python的“解釋器”,告訴“解釋器”:你要開始工作了。可是在“解釋”之前,其實執行的第一項工作和Java一樣,是編譯。

在命令行中如何執行一個Java的程序:

javac hello.java
java hello

在用Eclipse之類的IDE時,將這兩部給融合成了一部而已。其實Python也一樣,當執行python hello.py時,他也一樣執行了這么一個過程,所以應該這樣來描述Python,Python是一門先編譯后解釋的語言

簡述Python的運行過程

先來說兩個概念,PyCodeObject和pyc文件。

PyCodeObject則是Python編譯器真正編譯成的結果。

當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。

當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,如果找到,則直接載入,否則就重復上面的過程。

故,pyc文件其實是PyCodeObject對象的一種持久化保存方式。

pyc的目的是重用

總結

源代碼在編譯器編譯成字節碼(PyCodeObject)放在內存中,PVM解釋執行字節碼。

第二次運行,直接讀取字節碼,PVM解釋執行字節碼,省去了編譯的時間。

15-07-19-ED96ze

參考

說說Python程序的執行過程

python程序是如何運行的
談談 Python 程序的運行原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM