为了研究__pycache__的作用,特做实验如下:
大致思路是先“使用版本控制工具git监控文件变动”,再“查阅官方文档进行深入了解”
新建空白测试用文件夹TestForPyCache并进入


初始化Git仓库

新建空白Py文件

fsutil file createnew main.py 0
意思为创建大小为0的main.py文件
创建一个最简单的模块
新建MyModel文件夹

并在新建的文件夹中新建两个空白文件__init__.py和GetSum.py

fsutil file createnew .\MyModel\__init__.py 0
fsutil file createnew .\MyModel\GetSum.py 0
编辑新建的Py文件
MyModel/GetSum.py:

这里使用一段非常简单的代码进行测试
# 求1 + 2 + 3 + ... + n
def getSumN(n: int) -> int:
s = 0
for i in range(n + 1):
s += i
return s
main.py:

from MyModel import GetSum
n = int(input("Input the n: "))
result = GetSum.getSumN(n)
print(result)
记得保存文件
提交到版本库

可以看到有一次提交记录
并且当前工作区无改动

运行一次main.py

这次输入100000000
可以看到工作区有文件变动,新增了MyModel/__pycache__/文件夹

同样添加到版本库

可以看到一共有两条提交记录,且工作区无改动
那么,运行其他输入,PyCache会随之改变吗?
再次运行main.py

这次输入值50000000
查看工作区文件状态

发现工作区无改动
这就说明每次运行不同输入可能不会导致__pycache__随之进行多次改变
我电脑上Python的版本为3.9.4

查看官方文档:https://docs.python.org/zh-cn/3.9/tutorial/modules.html?highlight=pycache

点击蓝色链接PEP 3147:https://peps.python.org/pep-3147/
即可看到pycache创建流程图

(图源:https://peps.python.org/_images/pep-3147-1.png)
只有当“pycache/xx.pyc与源文件不符”时,才会重新编译生成pycache
pycache并不是为了存储“历史某次的执行结果”,而只是“为了快速加载模块的速度,把模块的编译版缓存在 pycache 目录”
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127724471