Python中的pyc文件是作什么用的?(61)
小朋友們好,大朋友們好!
我是貓妹,一名愛上Python編程的小學生。
和貓妹學Python,一起趣味學編程。

py文件和pyc文件
我們都知道py后綴是Python源碼文件,偶爾還會看到pyc后綴文件。
pyc后綴文件是做什么用的呢?
咱們今天學習下,pyc文件的基礎知識。
pyc是官方開發(fā)的解釋器編譯過生成的文件,它是二進制文件。
pyc就是python compiled的縮寫,它會保存在一個名叫__pycache__文件夾下。
文件命名有規(guī)律,比如module.cpython-38.pyc。
這里的cpython-38,表示c編寫的Python解釋器,Python解釋器版本是38。
pyc文件的作用是加速程序的執(zhí)行,import模塊時,解釋器會先編譯該模塊,生成pyc文件。
對模塊源文件進行了修改,pyc文件會更新。
模塊的源碼(py)轉換為字節(jié)碼文件(pyc)。
Python在解釋源程序時會分成兩個步驟:
處理源代碼,編譯生成一個二進制字節(jié)碼文件
對字節(jié)碼進行處理,才會生成CPU能夠識別的機器碼。
有了模塊的字節(jié)碼文件后,下次程序運行時,如果在上次保存字節(jié)碼之沒有修改過源碼,Python將會加載pyc文件并跳過編譯這個步驟。

舉個例子
pyc文件的生成
在磁盤上建立一個文件夾pyc,在該文件夾下創(chuàng)建兩個Python文件,一個模塊module.py,一個是test.py。

運行test.py會生成文件夾__pycache__,內部有文件module.cpython-38.pyc。

py源碼文件如果沒有加入代碼混淆的話,那么生成的pyc文件,是可以反編譯出源碼的。
我們隨便選一個在線的工具,類似工具有很多,也可以本地編碼實現(xiàn)。
如圖:

pyc文件的用途
既然pyc是py文件編譯生成的,那么pyc文件是否可以替代Python呢?
這樣不就可以隱藏源碼了嗎?
可以的,把test.py放入__pycache__,pyc文件改名為module.pyc。

非模塊文件也可以生成pyc文件
我們刪除其他文件,新建hello.py。

正常運行python文件,不加參數:python hello.py。
如果想生成pyc文件呢?
需要加個參數:python -m py_compile hello.py
生成的hello.cpython-38.pyc可以用Python運行




好了,我們今天就學到這里吧!
如果遇到什么問題,咱們多多交流,共同解決。
我是貓妹,咱們下次見!