本文出自“阿敏其人”簡書博客,轉(zhuǎn)載請注明出處覆致。
文/阿敏其人
當(dāng)我們的python文件被編譯過侄旬,文件之間存在import關(guān)系,就會生成一個__pyc__
文件夾篷朵。
比如我們新建一個工程勾怒,里面一共兩個py文件婆排。
分別是ttt.py和imp.py
ttt.py里面就只有一個方法声旺。
imp.py import了ttt。編譯過后段只,我們會看見多了一個__pyc__
文件夾
.
imp.py
import ttt
ttt.sayHello()
image.png
內(nèi)部
image.png
一腮猖、存在的意義
主要意義:加快啟動速度
原因
Python 在解釋源程序時分為兩步:
- 第一步:將
源碼
轉(zhuǎn)為字節(jié)碼
- 第二步:將
字節(jié)碼
轉(zhuǎn)換為機器碼
image.png
pyc 文件是由 Python 解釋器將 模塊的源碼 轉(zhuǎn)換為 字節(jié)碼。
(pyc赞枕,py代表pychon澈缺,c 是 compiled的含義,pyc即編譯過的python文件 )
當(dāng)我們的程序沒有修改過炕婶,那么下次運行程序的時候姐赡,就可以跳過 從源碼到字節(jié)碼 的過程,直接加載 pyc 文件柠掂。
二项滑、命令生成 pyc 文件
生成單個pyc文件
對于py文件,可以執(zhí)行下面命令來生成pyc文件涯贞。
python -m test.py
另外一種方式是通過代碼來生成pyc文件枪狂。
import py_compile
py_compile.compile('/path/test.py')
批量生成pyc文件
針對一個目錄下所有的py文件進行編譯危喉。python提供了一個模塊叫compileall,具體請看下面代碼:
import compileall
compileall.compile_dir(r'/path')
這個函數(shù)的格式如下:
compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])
三州疾、注意點
1辜限、import過的文件才會自動生成 pyc文件。
2严蓖、pyc文件不可以直接看到源碼薄嫡,可以被反編譯
- 3、
pyc的內(nèi)容谈飒,是跟python的版本相關(guān)的岂座,不同 版本編譯后的pyc文件是不同的,2.5編譯的pyc文件杭措,2.4版本的python是無法執(zhí)行的
END