当 Python 执行代码的时候,会启用一个 Python 解释器,将源码(.py)文件读取到内存当中,然后编译成字节码(.pyc)文件,最后交给 Python 的虚拟机逐行解释并执行其内容,然后释放内存,退出程序。
当第二次在执行当前程序的时候,会现在当前目录下寻找有没有同名的 pyc 文件,如果找到了,则直接进行运行,否则重复上面的工作。
pyc 文件的目的其实就是为了实现代码的重用,为什么这么说呢?因为 Python 认为只要是 import 导入过来的文件,就是可以被重用的,那么他就会将这个文件编译成 pyc 文件。
python 会在每次载入模块之前都会先检查一下 py 文件和 pyc 文件的最后修改日期,如果不一致则重新生成一份 pyc 文件,否则就直接读取运行。
以上是我的个人理解,不知道对不对,求解。
![]() |
1
R4rvZ6agNVWr56V0 2016-10-19 16:16:59 +08:00 ![]() 主题太大了,你的意思是说:《 pyc 文件存在的意义是个啥吧》
pyc 本质是 magic number + 编译时间(或者叫修改时间?)+ PyCodeObject 组成的特定二进制编码( PyMarshal )文件 更正:会现在当前目录下寻找有没有同名的 pyc 文件 补充:还找同名的动态链接库如.dll 或.so 更正:每次载入模块之前都会先检查一下 py 文件和 pyc 文件的最后修改日期 补充:还要检查 magic number 呢 |