平时download下来的一些python工程,执行后都会有.pyc文件产生,所以一直都以为执行.py文件后都会产生.pyc文件,今天试了把,发现不是那么一回事情,查资料并研究后发现:
1.Python的运行执行模式为:将录入的源代码转换为字节码,之后字节码在Python虚拟机中运行(代码自动被编译,然后再解释)
2.一般执行一个.py文件会通过调用py_compile的compile()方法在内存中产生字节码,在程序结束的时候内存中的字节码会被丢弃
3.如果一个.py文件作为一个模块被其他.py文件import的话,python进程会将该字节码保存为.pyc文件,目的是加快启动速度,即如果我们在上次保存字节码之后麽有修改过源代码的话,python就会直接加载.pyc文件并跳过编译这个步骤。当Python必须重新编译的时候,它会自动检查源文件和字节码文件的时间戳:如果它发现我们又修改保存过源代码的话,则程序运行时字节码将会自动重新创建
4.如果.py文件没有被其他文件import,也想生成pyc文件的话,可以通过python -m py_compile hello.py这样的方式来编译生成.pyc文件