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封装对象实现时间效果
Apr 23 Python
Python and、or以及and-or语法总结
Apr 14 Python
numpy中索引和切片详解
Dec 15 Python
简单实现python进度条脚本
Dec 18 Python
python实现log日志的示例代码
Apr 28 Python
python+mysql实现学生信息查询系统
Feb 21 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Django stark组件使用及原理详解
Aug 22 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
python os.listdir()乱码解决方案
Jan 31 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
Session保存到数据库的php类分享
2011/10/24 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
Seajs的学习笔记
2014/03/04 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
常用python数据类型转换函数总结
2014/03/11 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
数控机械专业个人的自我评价
2014/01/02 职场文书
运动会广播稿100字
2014/01/11 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
铁路安全事故反思
2014/04/26 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android