Python 代码是如何运行的?

2016-10-18 14:19:12 +08:00
 ansheng

当 Python 执行代码的时候,会启用一个 Python 解释器,将源码(.py)文件读取到内存当中,然后编译成字节码(.pyc)文件,最后交给 Python 的虚拟机逐行解释并执行其内容,然后释放内存,退出程序。

当第二次在执行当前程序的时候,会现在当前目录下寻找有没有同名的 pyc 文件,如果找到了,则直接进行运行,否则重复上面的工作。

pyc 文件的目的其实就是为了实现代码的重用,为什么这么说呢?因为 Python 认为只要是 import 导入过来的文件,就是可以被重用的,那么他就会将这个文件编译成 pyc 文件。

python 会在每次载入模块之前都会先检查一下 py 文件和 pyc 文件的最后修改日期,如果不一致则重新生成一份 pyc 文件,否则就直接读取运行。

以上是我的个人理解,不知道对不对,求解。

1192 次点击
所在节点    Python
1 条回复
GeekGao
2016-10-19 16:16:59 +08:00
主题太大了,你的意思是说:《 pyc 文件存在的意义是个啥吧》
pyc 本质是 magic number + 编译时间(或者叫修改时间?)+ PyCodeObject 组成的特定二进制编码( PyMarshal )文件
更正:会现在当前目录下寻找有没有同名的 pyc 文件
补充:还找同名的动态链接库如.dll 或.so

更正:每次载入模块之前都会先检查一下 py 文件和 pyc 文件的最后修改日期
补充:还要检查 magic number 呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/313573

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX