本文要说明的问题
- 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