记录
转载:说说Python程序的执行过程
转载:静态语言和脚本语言的区别
编译和解释
编译是指将源代码一次性转换为目标代码的过程,指的是一次性编译,之后就不再需要源代码。
解释是指将源代码逐条转换为目标代码同时执行的过程,每次运行的时候同时会进行翻译。
编译器和解释器的区别
编译器是将源代码翻译为低级语言的程序,编译器将源程序每一条语句都翻译为机器语言,并且保存为二进制文件,这样计算机可以直接执行可以识别的机器语言,并且执行速度较快。而解释器直接执行用编程语言编写的指令的程序,执行程序时是一条一条的解释为机器语言让计算机来执行,此时运行速度就比较慢。
静态语言和脚本语言
静态语言是指使用编译执行的语言,其中编译器将源代码一次性转换为机器语言再执行。其中为静态语言的编程语言有C/C++、Java语言等。
脚本语言是指使用解释执行的语言,脚本语言是解释器直接执行源代码,逐条产生结果。其中为脚本语言的编程语言有PHP、Python、JavaScript、Matlab等。
python执行机制简述
python是先编译后解释的语言,当python程序运行时,编译的结果保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
pyc
编译型语言的优点在于,我们可以在程序运行时不用解释,而直接利用已经“翻译”过的文件。也就是说,我们之所以要把py文件编译成pyc文件,最大的优点在于我们在运行程序时,不需要重新对该模块进行重新的解释。所以,我们需要编译成pyc文件的应该是那些可以重用的模块,这于我们在设计软件类时是一样的目的。所以Python的解释器认为:只有import进来的模块,才是需要被重用的模块。
详述见原文