[译]pycache是什么?

原回答: https://stackoverflow.com/questions/16869024/what-is-pycache

当你用python运行一个程序时,解释器首先将它编译成字节码(这是一种过度简化)并将其存储在__pycache__文件夹中。
如果你看看那里你会发现一堆文件共享项目文件夹中的.py文件的名称,只有他们的扩展名是.pyc或.pyo。
这些分别是您的程序文件的字节码编译和优化的字节码编译版本。

作为一名程序员,你可以在很大程度上忽略它......它所做的只是让你的程序开始更快一点。
当你的脚本改变时,它们将被重新编译,如果你删除了文件或者整个文件夹并且再次运行你的程序,它们将会重新出现(除非你明确地禁止了这个行为)
如果您使用的是cpython(这是最常见的,因为它是参考实现),并且您不需要该文件夹,那么可以通过启动具有-B标志的解释器来禁止它

python -B foo.py

python解释器的工作顺序:
1 完成模块的加载和链接;
2 将源代码编译为PyCodeObject对象(即字节码),写入内存中,供CPU读取;
3 从内存中读取并执行,结束后将PyCodeObject写回硬盘当中,也就是复制到.pyc或.pyo文件中,以保存当前目录下所有脚本的字节码文件;
4 之后若再次执行该脚本,它先检查【本地是否有上述字节码文件】和【该字节码文件的修改时间是否与其脚本一致】。是就直接执行,否则重复上述步骤。

原文地址:https://www.cnblogs.com/everfight/p/pycache.html