解释型语言是什么?对比编译型语言有什么区别?
为了将高级语言转换成计算机能识别的机器语言,需要一个‘翻译’过程。即编译或者解释
编译型语言
编译型语言的程序只要经过编译器编译之后,
每次运行程序都可以直接运行,不需要再次'翻译'
优点:执行速度快。
缺点:可移植性差,因为编译需要对操作系统的库做出链接,所以程序运行时需要用到特定的系统库
解释型语言
解释语言编写的程序在每次运行时都需要通过解释器对程序进行动态解释和执行
即解释一条代码,执行一条
优点:可移植好,因为只需要各种系统有python解释器便可运行,不需要乱七八糟的系统库支持
缺点:执行速度慢,因为相比直接执行,多了一个翻译过程
额外知识:脚本语言
脚本语言也算是解释器语言的一个子集。
特点:由文本储存,可直接运行
例如:你建立了一个程序,叫aa.exe,可以打开.aa为扩展名的文件.
你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言
扩展知识:动态语言
一类在运行时可以改变其结构的语言
运行时发现数据类型,运行时可变其结构的语言
例如:不需要事先声明变量类型,同一变量可以被赋值为不同的对象类型
并且,运行时可以动态引进新的函数、对象、类,或将已有的函数可以被删除或是其他结构上的变化
python解释器的种类和特点?
根据实现该解释器的语言分类
cpython,PyPy,Jython,Ironpython。分别是c语言,python,java,.net。
当然最常用的是cpython,因为其库最全。
值得注意的是,PyPy采用的技术可以显著提高运行速度
根据交互方式分类
ipython:基于CPython之上的一个交互式解释器,对于用户交互非常好
python解释器的执行程序的流程?
Python首先先把代码(.py文件)编译成半成品的字节码,然后将其交给虚拟机,虚拟机一条一条将字节码指令翻译成cpu可识别的机器指令交由CPU执行,从而完成程序的执行。
额外知识:什么是字节码?
字节码是一种中间状态(中间码)的二进制代码,包含执行程序、由一序列 op 代码/数据对。不能直接被CPU执行,
需要直译器转译后才能成为机器码。机器码便能被CPU执行
具体流程
第一步:python解释器启动,此时就相当于启动了一个文本编辑器
第二步:从硬盘上将test.py的文件内容读入到内存中并翻译为字节码
注意:解释器只关心文件内容,不关心文件后缀名
第三步:python解释器解释执行刚刚加载到内存中test.py的代码
扩展知识:被执行的python代码和解释器绑定在一起
python进程其实就是解释器进程,解释器进程读取代码,呈现不同的效果。
附:python解释器的常用参数命令
python -i test.py
运行后交互
python -m pdb test.py
运行后调试
python -O test.py
关闭断言
python -OO test.py
去掉assert语句和__doc__文档字符串