python的pyc和pyo文件

python並非完全是解釋性語言,它是有編譯的,先把源碼py文件編譯成pyc或者pyo,然後由python的虛擬機執行,相對於py文件來說,編譯成pyc和pyo本質上和py沒有太大區別,只是對於這個模組的載入速度提高了,並沒有提高程式碼的執行速度,通常情況下不用主動去編譯pyc文件,文檔上說只要調用了import model那麼model.py就會先編譯成pyc然後載入 1.如果需要特殊的單獨編譯,則只需要使用py_complie這個模組就行了,如下

import py_compile

py_compile.compile(r'H:gametest.py')

compile函數原型:

compile(file[, cfile[, dfile[, doraise]]])

file 表示需要編譯的py文件的路徑

cfile 表示編譯後的pyc文件名稱和路徑,默認為直接在file文件名後加c 或者 o,o表示優化的位元組碼

dfile 錯誤消息保存的路徑

doraise 可以是兩個值,True或者False,如果為True,則會引發一個PyCompileError,否則如果編譯文件出錯,則會有一個錯誤,默認顯示sys.stderr中,而不會引發異常

2.如果要把一個文件夾下的所有py文件都進行編譯,則用下面的命令

import compileall

compileall.compile_dir(dirpath)

dirpath是我們要編譯的文件夾的絕對路徑

3.如果要編譯pyo文件則

編譯成 pyo 就是在控制台執行 python -O -m py_compile file.py

其中file.py就是我們要編譯的源文件

個人感覺這個原理知道就行了,其實沒多大用處,僅僅提高了載入速度而已,另外還有一點好處就是可以減少文件的大小,可能對於嵌入式系統中把需要的模組都編譯成pyo文件可減少容量,畢竟嵌入式系統多數都是容量有限,現在的pc硬體越來越強,僅僅提高載入速度沒多大作用,不過這也是python的機理,它就是這麼幹活的,知道就好,呵呵