執行pythondemo.py后,將會啟動Python的解釋器,然后將demo.py編譯成一個字節碼對象PyCodeObject。
有的人可能會很好奇,編譯的結果不應是pyc文件嗎,就像Java的class文件,那為什么是一個對象呢,這里稍微解釋一下。
在Python的世界中,一切都是對象,函數也是對象,類型也是對象,類也是對象(類屬于自定義的類型,在Python2.2之前,int,dict這些內置類型與類是存在不同的,在之后才統一起來,全部繼承自object),甚至連編譯出來的字節碼也是對象,.pyc文件是字節碼對象(PyCodeObject)在硬盤上的表現形式。
在運行期間,編譯結果也就是PyCodeObject對象,只會存在于內存中,而當這個模塊的Python代碼執行完后,就會將編譯結果保存到了pyc文件中,這樣下次就不用編譯,直接加載到內存中。pyc文件只是PyCodeObject對象在硬盤上的表現形式。
這個PyCodeObject對象包含了Python源代碼中的字符串,常量值,以及通過語法解析后編譯生成的字節碼指令。PyCodeObject對象還會存儲這些字節碼指令與原始代碼行號的對應關系,這樣當出現異常時,就能指明位于哪一行的代碼。
以上內容為大家介紹了python編譯器,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。