事情大概是这样的,以前我一直觉得python文件在执行过以后就会生成pyc文件,后来一次偶然状况下,发现仍是本身too young too simple,在看过其余大神文章而且本身验证以后,发现仍是有点意思的,权当没事写点文章吧。python
简单来讲,pyc文件就是Python的字节码文件,咱们都知道Python是一种全平台的解释性语言,全平台其实就是Python文件在通过解释器解释以后(或者称为编译)生成的pyc文件能够在多个平台下运行,这样一样也能够隐藏源代码。其实,Python是彻底面向对象的语言,Python文件在通过解释器解释后生成字节码对象PyCodeObject,pyc文件能够理解为是PyCodeObject对象的持久化保存方式。数据库
pyc文件只有在文件被当成模块导入时才会生成。也就是说,Python解释器认为,只有import进行的模块才须要被重用。 生成pyc文件的好处显而易见,当咱们屡次运行程序时,不须要从新对该模块进行从新的解释。主文件通常只须要加载一次不会被其余模块导入,因此通常主文件不会生成pyc文件。
下面来举个例子说明,见代码缓存
文件print_hello.py print("hello")
import print_hello
执行python print_hello.py函数
E:\test>python print_hello.py hello E:\test>dir 驱动器 E 中的卷是 文件 卷的序列号是 B612-D1B0 E:\test 的目录 2017/09/25 21:09 <DIR> . 2017/09/25 21:09 <DIR> .. 2017/09/25 21:08 18 import_hello.py 2017/09/25 21:08 14 print_hello.py 2 个文件 32 字节 2 个目录 49,367,699,456 可用字节
能够发现并无pyc文件生成,
执行python import_hello.py设计
E:\test>python import_hello.py hello E:\test>dir 驱动器 E 中的卷是 文件 卷的序列号是 B612-D1B0 E:\test 的目录 2017/09/25 21:12 <DIR> . 2017/09/25 21:12 <DIR> .. 2017/09/25 21:08 18 import_hello.py 2017/09/25 21:08 14 print_hello.py 2017/09/25 21:12 124 print_hello.pyc 3 个文件 156 字节 2 个目录 49,367,699,456 可用字节
须要说明两点的是:code
if __name__ == "__main__": print("hello")
总的来讲,了解pyc其实对于Python开发者来讲并无多大的意义,本着钻研的精神写下这篇文章,感受有一下几点能够考虑对象