根据我的理解,缓存是类似文件的加密文件。
我们对__pycache__文件夹做什么?它是我们提供给人们的而不是我们的源代码吗?仅仅是我的输入数据吗?这个文件夹一直在创建,它是干什么用的?
根据我的理解,缓存是类似文件的加密文件。
我们对__pycache__文件夹做什么?它是我们提供给人们的而不是我们的源代码吗?仅仅是我的输入数据吗?这个文件夹一直在创建,它是干什么用的?
当前回答
python解释器编译*.py脚本文件,并将编译结果保存到__pycache__目录。
当再次执行项目时,如果解释器识别出*.py脚本没有被修改,它将跳过编译步骤并运行先前生成的*.py脚本。Pyc文件存储在__pycache__文件夹中。
当项目比较复杂时,可以使项目运行前的准备时间变短。如果程序太小,可以使用带有B选项的python -B abc.py来忽略这一点。
其他回答
从官方的python教程模块
为了加速加载模块,Python将每个模块的编译版本缓存在__pycache__目录下的module.version。Pyc,其中版本对编译文件的格式进行编码;它通常包含Python版本号。例如,在CPython发行版3.6中,spam.py的编译版本将被缓存为__pycache__/spam.cpython-36.pyc。
来自Python文档编程faq
当一个模块第一次被导入时(或者在当前编译文件创建后源文件发生了更改),应该在包含.py文件的目录的__pycache__子目录中创建一个包含编译代码的.pyc文件。.pyc文件的文件名将与.py文件同名,以.pyc结尾,中间有一个组件,该组件取决于创建它的特定python二进制文件。
在3.2及以后版本中,Python将.pyc编译的字节代码文件保存在名为__pycache__的子目录中,该子目录位于源文件所在的目录中,其文件名标识创建它们的Python版本(例如script.cpython-33.pyc)。
当你使用下面这行代码时,会创建一个__pycache__文件夹:
import file_name
或者尝试从您创建的另一个文件中获取信息。这使得在第二次运行程序打开另一个文件时速度略快。
python解释器编译*.py脚本文件,并将编译结果保存到__pycache__目录。
当再次执行项目时,如果解释器识别出*.py脚本没有被修改,它将跳过编译步骤并运行先前生成的*.py脚本。Pyc文件存储在__pycache__文件夹中。
当项目比较复杂时,可以使项目运行前的准备时间变短。如果程序太小,可以使用带有B选项的python -B abc.py来忽略这一点。
执行python脚本会在内存中生成字节码,并一直保存到程序关闭为止。 在导入模块的情况下,为了更快的可重用性,Python会创建一个缓存. PYC (PYC是'Python' 'Compiled')文件,其中缓存导入模块的字节码。 想法是通过避免在重新导入python模块时重新编译(编译一次,运行多次策略)来加速加载。
该文件的名称与模块名称相同。初始点之后的部分表示创建缓存的Python实现(可以是CPython),后跟它的版本号。