Python作为动态解释性语言,其运行机制可参考下图(图片来自网络,其中的“编译器”是对解释器的广义称呼):
都说解释器慢,Python也有想办法提高一下运行速度的,那就是使用pyc文件。这点参考了JAVA的字节码做法,但并不完全类同。
我们编写的代码一般都会保存在以.py为后缀的文件中。在执行程序时,解释器逐行读取源代码并逐行解释运行。每执行一次,就重复一次这个过程,这其中耗费了大量的重复性的解释工作。为了减少这一重复性的解释工作,Python引入了pyc文件,pyc文件是将py文件的解释结果保存下来的文件,这样,下次再运行的时候就不用再解释了,直接使用pyc文件就可以了,这无疑大大提高了程序运行速度。
对于pyc文件,你必须知道以下几点:
· 对于当前调用的主程序不会生成pyc文件;
· 以import xxx或from xxx import xxx等方式导入主程序的模块才会生成pyc文件;
· 每次使用pyc文件时,都会根据pyc文件的创建时间和源模块进行对比,如果源模块有修改,则重新创建pyc文件,并覆盖先前的pyc文件,如果没有修改,直接使用pyc文件代替模块;
· pyc文件统一保存在模块所在目录的__pycache__文件夹内。
如下图所示,modula_a被module_main导入后会生成对应的pyc文件,但是module_main不会生成pyc文件!!
另外,Python的pyc并不等同于JAVA的字节码!