1. 程式人生 > >py 與 pyc 文件

py 與 pyc 文件

匹配 touch mark 時間不一致 date body mar 新的 pyc

本文要說明的問題

  • pyc 文件是什麽
  • pyc 文件的作用
  • py 與 pyc 文件沖突

pyc 文件是什麽

當 py 文件加載後,py 文件被二進制編碼成 pyc 文件。py 文件的修改時間被記錄到 pyc 文件中。

這裏的加載意味著要被其他模塊導入,如果你只是運行 python filename.py,那麽不會生成 pyc 文件。

pyc 文件的作用

pyc 文件是為了讓加載 Python 模塊更快,因為 pyc 相比 py 文件編譯過程可以被跳過。

pyc 文件不能令執行更快。

py 與 pyc 文件沖突

py 文件的修改時間被記錄到了 pyc 文件中,如果兩者不匹配,Python 會忽略 pyc 文件,加載 py 文件然後編譯出新的 pyc 文件。

這裏的不匹配指的是 py 與 pyc 文件的修改時間不一致。

即使 pyc 文件記錄的修改時間晚於 py 文件(pyc 文件更加新鮮),還是會進行上述流程。

以下是一個驗證示例

$ date
Tue Feb  6 10:31:28 CST 2018

echo "print('Hello')" > hello.py

$ python
>>> import hello
Hello
>>> quit()

$ ls -l | grep hello
-rw-r--r--   1 jsm  staff       15 Feb  6 10:31 hello.py
-rw-r--r--
1 jsm staff 110 Feb 6 10:32 hello.pyc # 修改 hello.py 的修改時間 $ touch -mt 200801120000 hello.py $ python >>> import hello Hello >>> quit() $ ls -l | grep hello -rw-r--r-- 1 jsm staff 15 Jan 12 2008 hello.py # 可以看出 hello.pyc 相比上面更新了 -rw-r--r-- 1 jsm staff 110 Feb 6 10:35 hello.pyc

py 與 pyc 文件