python属于解释型语言么


Posted in Python onJune 15, 2020

通常的说法,编译代表着将一个高级语言转化为 CPU 能执行的机器码。当你编译 C 的时候,的确是做的这样的操作。编译的结果是一个二进制可执行文件,这时你的系统可直接运行这个程序。

与此相对的,解释的意思是这样的:程序运行时每次读源文件中的一行代码,并执行相应的操作,就这样一行一行的重复下去。当然,所谓的脚本语言就是这么运行的。

在 Python 中,源代码会被编译为更低级的一种形式,我们称之为字节码。字节码是一串指令,和 CPU 的指令集类似。但是字节码并不直接被 CPU 执行,而是在虚拟机中执行的。当然,这里的虚拟机并不模仿整个操作系统的环境,只是提供了字节码执行的一个环境。

Python 还有一个重要的特性,就是交互式命令行。你可以敲入一行 Python 语句,然后立刻回车执行。实际上,即使是这个过程,Python 同样是先转为字节码,然后执行。而这个交互式命令行这个特性,在很多编译型语言里是没有的。同样因为没有显示的调用编译程序,很多人将执行 Python源文件的程序叫做 Python 解释器。

解释型语言和编译型语言

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。

编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。

解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。

通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上接近编译型语言,而不能超过编译型语言。

此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

内容扩展:

一个经常听见的问题,那就是:Python 是解释型的语言吗?它会被编译吗?这个问题没有想象中那么好回答。和很多人认识世界一样,习惯以一个简单的模型去评判一些事物。而事实上,里面包含了很多很多的细节。

通常的说法,编译代表着将一个高级语言转化为 CPU 能执行的机器码。当你编译 C 的时候,的确是做的这样的操作。编译的结果是一个二进制可执行文件,这时你的系统可直接运行这个程序。

与此相对的,解释的意思是这样的:程序运行时每次读源文件中的一行代码,并执行相应的操作,就这样一行一行的重复下去。当然,所谓的脚本语言就是这么运行的。

但事实上,上面的定义有太多的局限。一门真正的语言,为了拥有更多有用和强大的特性,通常采用了各种各样的实现方式。我们可以将编译理解为更通用一些:将一种语言转化为另一种语言形式。通常来说,源语言比目标语言要更高级一些,比如将 C 转化为机器码。当然,JavaScript 8 到 JavaScript 5 的转化也算是一种编译。

到此这篇关于python属于解释型语言么的文章就介绍到这了,更多相关python是解释型语言吗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python自定义函数的创建、调用和函数的参数详解
Mar 11 Python
在Python中使用next()方法操作文件的教程
May 24 Python
Python删除windows垃圾文件的方法
Jul 14 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
使用pandas的box_plot去除异常值
Dec 10 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
python ubplot使用方法解析
Jan 10 Python
Pytest测试框架基本使用方法详解
Nov 25 Python
python要安装在哪个盘
Jun 15 #Python
python中wheel的用法整理
Jun 15 #Python
keras绘制acc和loss曲线图实例
Jun 15 #Python
Python定义一个函数的方法
Jun 15 #Python
python是怎么被发明的
Jun 15 #Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 #Python
Python如何在windows环境安装pip及rarfile
Jun 15 #Python
You might like
php 什么是PEAR?
2009/03/19 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
php框架知识点的整理和补充
2021/03/01 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
JS 表单验证大全
2011/11/23 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
python 读写中文json的实例详解
2017/10/29 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
详解小白之KMP算法及python实现
2019/04/04 Python
Django REST framework 视图和路由详解
2019/07/19 Python
python随机生成库faker库api实例详解
2019/11/28 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
优秀大学生自荐信
2014/06/09 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
Redis高可用集群redis-cluster详解
2022/03/20 Redis
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
利用Java连接Hadoop进行编程
2022/06/28 Java/Android