python是解释型还是编译型

参考借鉴了一些网络上的文章,大概搞清楚python的执行过程。

python是解释型还是编译型

Python和Java/C#一样,也是一门基于虚拟机的语言,先来从表面上简单地了解一下Python程序的运行过程。

在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。

在命令行中如何执行一个Java的程序:

javac hello.java
java hello

在用Eclipse之类的IDE时,将这两部给融合成了一部而已。其实Python也一样,当执行python hello.py时,他也一样执行了这么一个过程,所以应该这样来描述Python,Python是一门先编译后解释的语言

简述Python的运行过程

先来说两个概念,PyCodeObject和pyc文件。

PyCodeObject则是Python编译器真正编译成的结果。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

故,pyc文件其实是PyCodeObject对象的一种持久化保存方式。

pyc的目的是重用

总结

源代码在编译器编译成字节码(PyCodeObject)放在内存中,PVM解释执行字节码。

第二次运行,直接读取字节码,PVM解释执行字节码,省去了编译的时间。

15-07-19-ED96ze

参考

说说Python程序的执行过程

python程序是如何运行的
谈谈 Python 程序的运行原理

原文地址:https://www.cnblogs.com/hiyang/p/12973299.html