Python真的是解释型语言吗?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/A_Ainley/article/details/102536296

刚接触python的时候就知道,python有一个缺点,那就是运行速度比较慢,因为python是一门解释型语言。

那么,什么是解释型语言呢?
在这里插入图片描述
其实简而言之就是:python不像C语言那样,在运行之前需要编译那么麻烦,它可以直接运行。

而直接运行的后果就是,你边运行边“编译”,这里的编译叫做解释,有一种专门的东西叫做python解释器,解释一句,就把指令告诉电脑一句,所以相比较于C语言这种编译型语言,就比较慢了。

但是,python真的是解释型的语言吗?

今天我做东西,发现自己的项目目录里面多出来一个文件夹,__pycache__文件夹,里面有一个.pyc文件,本着好学的心,就去查了一下,到底是个什么东西。后来发现,它是python文件运行之后,编译后的结果。c是compiled(编译)的缩写。

所以这个.pyc文件是怎么形成的呢?
这里我们就要简单地说说python程序的运行过程了。

在说运行过程之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在文件管理系统中看到的pyc自然不必多说,而其实PyCodeObject则是Python程序运行之后真正编译成的结果。我们先简单知道就可以了,继续向下看。

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

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,先对.pyc文件和.py文件的最近一次的修改时间进行判断,如果.pyc文件的修改时间晚于.py文件,说明.py文件中的源代码未修改过,则直接载入,否则就重复上面编译的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

所以呢,我们应该这样来描述Python,Python是一门先编译后解释的语言。

人生苦短,我用Python!

猜你喜欢

转载自blog.csdn.net/A_Ainley/article/details/102536296