这些python文件扩展名是什么意思?
它们之间有什么区别?它们是如何从* .py文件生成的?
答案 0 :(得分:429)
.py
:这通常是您编写的输入源代码。.pyc
:这是编译后的字节码。如果你导入一个模块,python将构建一个包含字节码的*.pyc
文件,以便以后更容易(更快)地再次导入它。.pyo
:这是在优化(*.pyc
)开启时创建的-O
文件。.pyd
:这基本上是一个Windows dll文件。 http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll 另外,有关.pyc
vs .pyo
的进一步讨论,请查看:http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html(我已复制了以下重要部分)
- 使用-O标志调用Python解释器时,会生成优化代码并将其存储在“.pyo”文件中。优化器目前没有多大帮助;它只删除断言语句。当使用-O时,所有字节码都被优化; .pyc文件被忽略,.py文件被编译为优化的字节码。
- 将两个-O标志传递给Python解释器(-OO)将导致字节码编译器执行优化,在某些极少数情况下可能会导致程序出现故障。目前只从字节码中删除
__doc__
个字符串,从而产生更紧凑的'.pyo'文件。由于某些程序可能依赖于这些程序可用,因此如果您知道自己在做什么,则应该只使用此选项。- 从'.pyc'或'.pyo'文件读取程序时,程序运行速度不比从'.py'文件读取时快;关于'.pyc'或'.pyo'文件的唯一更快的事情就是加载它们的速度。
- 当通过在命令行上给出其名称来运行脚本时,脚本的字节码永远不会写入“.pyc”或“.pyo”文件。因此,可以通过将其大部分代码移动到模块并使用导入该模块的小引导脚本来减少脚本的启动时间。也可以直接在命令行上命名'.pyc'或'.pyo'文件。
答案 1 :(得分:207)