详解python编译器和解释器的区别


Posted in Python onJune 24, 2019

高级语言不能直接被机器所理解执行,所以都需要一个翻译的阶段,解释型语言用到的是解释器,编译型语言用到的是编译器。

编译型语言通常的执行过程是:源代码——预处理器——编译器——目标代码——链接器——可执行程序

某种意义上来说预处理事实上是一个附加的功能,C,PHP,都可以添加这种功能,其中,预处理指令多为头文件包含,宏定义等等。因为宏定义的核心说白了就是一个字“换”,所以预处理就是提供一个程序执行的环境。

编译器——目标代码就是把高级程序语言转换成机器可以理解执行的机器语言。

链接器的功能开始理解前要先了解一点。头文件在预处理过程中被编译成一个个单独的文件,也就是库文件。而程序是另外的文件,并不包含在库文件里。所以这就需要一个“胶水”把程序和库连接起来形成一个可执行文件(Windows是EXE)。这就是链接器的作用。

解释器理解就简单了,把程序一行行的的理解,执行。首先读一行代码,然后执行这一行代码的意思,接下来读下一行代码,执行次行代码。一次循环往复。

编译器则是读入所有代码,打包成可执行文件,执行。由于我们运行的一般都为编译过后的可执行文件,也就是执行的是机器语言(而且是IDE优化后的),所以运行速度要比解释型语言快。

Python 相关文章推荐
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 Python
pandas重新生成索引的方法
Nov 06 Python
python pandas库的安装和创建
Jan 10 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
Python通过socketserver处理多个链接
Mar 18 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
python爬虫之自制英汉字典
Jun 24 #Python
Pyqt5实现英文学习词典
Jun 24 #Python
set在python里的含义和用法
Jun 24 #Python
如何利用Anaconda配置简单的Python环境
Jun 24 #Python
python程序变成软件的实操方法
Jun 24 #Python
PyCharm安装Markdown插件的两种方法
Jun 24 #Python
python设置环境变量的原因和方法
Jun 24 #Python
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php之Memcache学习笔记
2013/06/17 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
详解Bootstrap插件
2016/04/25 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
vue.js表格分页示例
2016/10/18 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
python的列表List求均值和中位数实例
2020/03/03 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
历史学专业求职信
2014/06/19 职场文书
公司员工体检通知
2015/04/21 职场文书
民事答辩状格式范文
2015/05/21 职场文书
全民创业工作总结
2015/08/13 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android