python解释器及工作原理

操作系统介绍
操作系统位于计算机硬件与应用软件之间
是一个协调、管理、控制计算机硬件资源与软件资源的控制程序

操作系统功能:
控制硬件
把对硬件复杂的操作封装成优美简单的接口(文件),给用户或者应用程序去使用。
注意:一套完整的计算机系统包含

     应用程序:qq、微信等

     操作系统:windows、linux等

     计算机硬件:鼠标、键盘、主板、显示器、cpu等

强调:
python开发的都是应用程序
应用程序无法直接操作硬件,但凡要操作硬件,都是调用操作系统的接口

编程语言分类:
机器语言:
直接用二进制编写程序
优点:程序执行效率高
缺点:开发效率低

汇编语言:
用英文标签去代替二进制指令,本质还是再直接操作硬件
优点:相对于机器语言的开发效率要高
缺点:执行相对于机器语言要低

高级语言:

高级语言就是直接用人能理解的语言跟风格来编写程序,程序员无需再去考虑复杂的硬件操作

问题是我们用高级语言编写的程序归根结底还是要给计算机去执行,这就涉及到一个翻译的过程,要把人用高级语言编写的程序翻译成计算机所能理解的二进制指令去执行,按照翻译方式的不同,可以分为编译型和解释型两类:

类型语言优点缺点
编译型c执行效率比解释型高开发效率不如解释型
解释型python开发效率高执行效率比编译型慢

python解释器及工作原理

我们编写代码时会得到一个.py结尾的文件,要想运行执行此文件就需要python解释器。

python解释器的构成及其各部分功能
解释器由一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节码文件,而虚拟机负责执行字节码。
所以,解释型语言其实也有编译过程,只不过这个编译过程并不是直

接生成目标代码,而是中间代码(字节码),然后再通过虚拟机来逐行解释执行字节码

个人理解执行过程原理:
执行 python XX.py 后,将会启动 Python 的解释器,python解释器的编译器会将.py源文件编译(解释)成字节码生成PyCodeObject字节码对象存放在内存中。python解释器的虚拟机将执行内存中的字节码对象
转化为机器语言,虚拟机与操作系统交互,使机器语言在机器硬件上运行。运行结束后python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

pyc文件,文件中包含python的magic number(来说明编译时使用的python版本号)、源文件的mtime(使pyc和py文件保持同步)、编译出的code对象。

现存的python解释器的种类:
CPython这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值