py 与 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
原文地址:https://www.cnblogs.com/jay54520/p/8421182.html