我想知道pyc文件(python字节码)是什么。我想知道所有的细节。 我想知道pyc文件如何与编译器接口。它是exe的替代品吗? 它需要由python运行吗? 它是否像.py文件一样可移植? 我应该在哪里使用它?
答案 0 :(得分:16)
为了补充Mike Graham的回答,有一些有趣的评论here提供了有关pyc文件的一些信息。最有趣的是,我怀疑你就是这条线:
从'.pyc'或'.pyo'文件读取程序时,程序运行速度不比从'.py'文件读取时快;关于'.pyc'或'.pyo'文件,唯一更快的是它们加载的速度。
它击中了头上的指甲w.r.t. pyc文件的关键。 pyc
是预先解释的py
文件。 python字节码仍然与从py
文件生成的字节码相同 - 不同之处在于,当使用pyc
文件时,您不必经历创建{{1}文件的过程。输出(运行pyc
文件时执行的操作)。阅读,因为您不必将python脚本转换为python字节码。
如果您在py
中遇到.class文件,这是一个类似的概念 - 不同之处在于java,您必须在java解释器执行应用程序之前使用java
进行编译。不同的做事方式(内部将因为不同的语言而大不相同),但同样广泛的想法。
答案 1 :(得分:9)
Python字节码需要Python运行,不能在没有Python的情况下独立运行,并且特定于Python的特定x.y
版本。它应该可以跨平台移植到同一版本。您没有共同的理由使用它; Python使用它来优化在重复导入时解析.py文件。无视pyc文件的存在,你的生活会很好。
答案 2 :(得分:6)
来自docs:
作为使用大量标准模块的短程序的启动时间的重要加速,如果在找到spam.py的目录中存在名为spam.pyc的文件,则假定包含已经 - 模块垃圾邮件的“字节编译”版本。用于创建spam.pyc的spam.py版本的修改时间记录在spam.pyc中,如果这些文件不匹配,则忽略.pyc文件。
有关详细信息,请参阅参考资料。但是一些具体的答案:
spam.pyc文件的内容与平台无关,因此Python模块目录可以由不同体系结构的机器共享。
不是可执行文件;它在编译器内部用作中间步骤。
通常,您不会手动制作.pyc文件:解释器会自动生成它们。