".py"和".pyc"文件有什么区别?

134
我注意到当某个同名的 .py 文件被运行时,会自动产生 .pyc 文件。那么 .py.pyc 文件有什么区别呢?
此外,我发现保留 .pyc 文件会占用空间,请问是否应该删除这些文件?或者说,保留这些文件有什么好处和/或必要性吗?
更新:以下是两个已经回答的与我的问题相关的问题: 如果Python是解释性语言,那么 .pyc 文件是什么? 为什么主要可运行的Python脚本没有像模块一样编译成 .pyc 文件? 此问题不是重复的 原因 1:因为我在询问这两个文件之间的区别。S.Lott找到的题目“如果Python是解释性语言,那么 .pyc 文件是什么?”并没有问到 .py.pyc 文件之间的区别,而是在询问 .pyc 文件是什么。
原因 2:因为我的次要问题“是否应该删除 .pyc 文件?或者说,保留这些文件有什么好处和/或必要性?”提供了更多关于 .pyc 文件以及如何处理它们的信息。
原因 3:当初学Python编程的人想要找到“.py.pyc 文件之间有什么区别?”的答案时,他们会直接找到我的问题。这有助于缩短搜索时间,因为问题非常直截了当。

这个领域在SO上有一个讨论:- https://dev59.com/Jm865IYBdhLWcg3wTc3h - pyfunc
http://net-informations.com/python/iq/pyc.htm - Channa
3个回答

89

.pyc 包含 Python 源代码的编译字节码。Python 解释器在加载 .py 文件之前会先加载 .pyc 文件,所以如果存在 .pyc 文件,它可以通过不必重新编译 Python 源代码来节省一些时间。如果你想要,你可以将它们删除,但它们不会引起问题,它们也不占用太多空间,而且在运行程序时可能会节省一些时间。


4
"他们可能在运行程序时节省一些时间。"你是错误的,请查看文档(http://docs.python.org/tutorial/modules.html):“当从.pyc或.pyo文件中读取程序时,它的运行速度并不比从.py文件中读取时更快;.pyc或.pyo文件唯一更快的是它们加载的速度。” - mouad
23
@tzzzzz说的没错,但加载时间会影响整个执行速度,尤其是对于那些花费更多时间在加载/编译源代码的小程序来说。 - mipadi
2
另外,pyc文件独立于py文件工作。一旦编译成字节码,就不需要py源代码了。 - Vitaliy Terziev

18

Python编译.py文件并将其保存为.pyc,以便在后续调用中引用。

删除它们并没有什么害处,但如果您要处理大量的数据,这样可以节省编译时间。


5
如果在 .py 文件中进行更改,Python 如何知道读取 .pyc 文件而不是 .py 文件?仅通过日期修改检查吗?还是更加先进? - Michael Butler
@MichaelButler 直接时间戳检查。 - Mirodinho

12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接