python 生成pyc后缀的文件

参考链接:https://www.jianshu.com/p/40a42bf1d15d

在Linux下面运行python文件,会发现生成了一个一样名字,但后缀不一样的文件,出去好奇网上查了一下。其实有过Java前台开发的应该有个印象,JS的代码也会生成一个编译 好的文件,只要你不改动文件,以后直接调用编译过的文件,省去了代码重新编译,提高响应速度。其实python作为高级语言,和Java一样面向对象的语言,其实目的是相同的。

什么是pyc文件呢?

  简单来说,pyc文件就是Python的字节码文件,我们都知道Python是一种全平台的解释性语言,全平台其实就是Python文件在经过解释器解释之后(或者称为编译)生成的pyc文件可以在多个平台下运行,这样同样也可以隐藏源代码。其实,Python是完全面向对象的语言,Python文件在经过解释器解释后生成字节码对象PyCodeObject,pyc文件可以理解为是PyCodeObject对象的持久化保存方式。

什么时候会生成pyc文件呢?

  pyc文件只有在文件被当成模块导入时才会生成。也就是说,Python解释器认为,只有import进行的模块才需要被重用。

通俗点就是你在其他python文件,引用了你前面写好的python文件里面的函数等,就会生成pyc文件,或者我发现你写个sh,文件去调用你的python文件,也是会生成一个pyc文件的。

生成pyc文件的好处显而易见,当我们多次运行程序时,不需要重新对该模块进行重新的解释。

pyc文件的过期时间

  • 在生成pyc文件的同时,写入了一个Long型的变量,用于记录最近修改的时间;
  • 每次载入之前都先检查一下py文件和pyc文件的最后修改日期,如果不一致则会生成一个新的pyc文件

总结

  总的来说,了解pyc其实对于Python开发者来说并没有多大的意义,本着钻研的精神写下这篇文章,感觉有一下几点可以考虑

  • Python的pyc文件从一定意义上可以减少解释器解释Python文件的时间,不必每次都要解释编译一遍,方便下次快速加载,有点类似数据库的缓存吧;
  • 想想如果我们想设计一个系统,类似主文件这种不会被重用,而其他模块可能会被重用,我们就需要分开设计对待了吧;
  • 在设计缓存系统时候,类似Python这种对比最后修改时间的方式,是不是可以给我们一点启示呢?

 





 

你可能感兴趣的:(Python)