Python如何運行
Python是一種解釋型語言,在執行Python的時,解釋器將源代碼source code翻譯成字節碼byte code,然後byte code交給Python虛擬機PVM去執行,整個流程如下圖所示:
byte code
1 字節碼翻譯
Python解釋器並不是每次都會將源代碼source code翻譯成字節碼byte code。比如,如果你沒有對源代碼做任何修改,那麽,當你執行python程序時,Python解釋器直接將字節碼交給Python虛擬機執行,而跳過了源代碼翻譯成字節碼的步驟。在下面兩種情形下,Python解釋器會重新翻譯源代碼為字節碼:
1 源代碼被改變。Python解釋器會檢查源代碼與字節碼的時戳,如果發現源代碼被修改,那麽就會重新翻譯。
2 Python版本改變。如果Python解釋器發現包含在字節碼裏的版本信息與當前Python版本不匹配,也會重新翻譯。對於<Python3.2之前的Python實現,版本信息包含在字節碼文件中的一個"magic‘’版本號裏面,對於>=Python3.2的Python實現,字節碼文件名就包含了版本信息
2 字節碼的存儲位置
Python字節碼後綴"pyc"表示complied.py文件。對於<Python3.2的實現,字節碼文件與源文件放在同一個目錄,對於>=Python3.2的實現,字節碼文件單獨放在一個__pycache__文件夾下,而__pycache__文件夾與源文件在同一個目錄,並且存放在__pycache__下的字節碼文件都包含Python的版本信息,比如script-33.pyc,表示當前字節碼是由Python3.3的實現翻譯而來。
PVM
Python虛擬機不需要單獨安裝,它是Python實現的一部分,本質上就是一個大的循環,一句一句執行著字節碼裏面的代碼
Python如何運行