Python是高级语言,是独立于机器面向过程或对象的语言,也可以说是人定义出来的语言,机器语言是机器能够去识别处理的语言,通过编译器与解释器就能够将python语言转成机器语言从而被机器处理执行
1. 编译器与解释器的区别
编译器是整体编译再执行,而解释器是边解释便执行。
举个简单的例子,编译器就相当于你买了一桶海底捞,那么所有海底捞食材都是整体“编译”好,只要通过倒水(执行)就可以吃,而解释器相当于你去海底捞门店,然后菜是一道一道上(一条一条解释这是啥菜),你是一道一道放入汤中吃(执行)。
编译器的特点是:
- 运行速度快(倒水即可),但任何一个小改动都要重新编译(重新设置海底捞食材整合到海底捞桶中)。
- 可脱离编译环境(脱离海底捞门店)。
- 代表语言:C语言
解释器的特点是:
- 运行速度慢,但部分改动不需要整体再重新编译(不要这道菜我就不把这道菜下汤/新加菜下汤)。
- 不可脱离解释环境(不能离开海底捞门店,出去了对空气下锅嘛)。
- 代表语言:Python
2. Python解释器的种类
CPython:官方版本解释器。用C语言开发,所以字如其名叫CPython,使用最广,也是我们平常所使用的
IPython:基于CPython之上的交互式解释器,实现代码功能与CPython无异,只是在视图交互上体验有所增强
PyPy:追求执行速度的解释器。采用JIT技术,对Python代码进行动态编译,显著提高Python代码执行速度。绝大部分CPython代码都能在PyPy上运行,但还是有所不同,这会导致相同的Python代码在两种解释器执行下结果不同
3. Python的运行机制
python的源文件通过解释器进行模块的加载及链接,然后将解释完成的字节码存入内存,提供给CPU进行操作,然后写入本地的.pyc文件,其触发条件是判断 是否存在.pyc文件+比较源文件与编译的.pyc文件的时间戳
Python运行机制.png