刚开始学python,发现虽然python也是解释型语言,但是执行一个单一的程序时并不像java一样生成一个字节码文件,而程序中如果有import导入的话就会生成导入文件的字节码文件.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文件。
另有一篇《简单浅析Python 源码文件与.PYC字节码文件的诞生问题》的文章:
[url]http://eatsalt.blog.163.com/blog/static/87940266201031451032191/[/url]
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文件。
另有一篇《简单浅析Python 源码文件与.PYC字节码文件的诞生问题》的文章:
[url]http://eatsalt.blog.163.com/blog/static/87940266201031451032191/[/url]