python程序需要编译吗


Posted in Python onJune 19, 2020

Python是编译型语言还是解释型语言?回答这个问题前,应该先弄清楚什么是编译型语言,什么是解释型语言。

所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译。

不过它是针对特定CPU体系的,这些目标代码只能在特定平台执行,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。

它不具备可移植性,但是执行速度快,C、C++这类语言属于编译型语言。

而解释型语言是在代码运行期间逐行翻译成目标机器码,下次执行时,还是需要逐行解释,我们可以简单认为 Java、Python 都是解释型语言。

编译型相当于厨师直接做好一桌子菜,顾客来了直接开吃,而解释型就像吃火锅,厨师把菜洗好,顾客需要自己动手边煮边吃。

效率上来说解释型语言自然比不过编译型语言,当然也不是绝对了,像 JIT 的效率就很高。

以上是对编译型语言和解释型语言的一个简单粗暴的区分,但是 Python(这里主要是指CPython)并不是严格的解释型语言;

因为 Python 代码在运行前,会先编译(翻译)成中间代码,每个 .py 文件将被换转成 .pyc 文件,.pyc 就是一种字节码文件,它是与平台无关的中间代码,不管你放在 Windows 还是 Linux 平台都可以执行,运行时将由虚拟机逐行把字节码翻译成目标代码。

我们安装Python 时候,会有一个 Python.exe 文件,它就是 Python 解释器,你写的每一行 Python 代码都是由它负责执行,解释器由一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节码文件,而虚拟机负责执行字节码,所以,解释型语言其实也有编译过程,只不过这个编译过程并不是直接生成目标代码,而是中间代码(字节码),然后再通过虚拟机来逐行解释执行字节码。

总结

Python代码首先会编程一个字节码文件,再由虚拟机逐行解释,把每一行字节码代码翻译成目标指令给CPU执行。

知识点扩展:

基于python的字节编译

定义:

把模块定义成二进制语言程序的这个过程叫做字节编译

python是解释型语言,它的字节编译是由解释器完成的

编译py文件,生成pyc结尾的文件的方法,

Import zipfile.py

到此这篇关于python程序需要编译吗的文章就介绍到这了,更多相关python程序用编译么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python open()文件处理使用介绍
Nov 30 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
python实现基本进制转换的方法
Jul 11 Python
详解Django中的过滤器
Jul 16 Python
python去除字符串中的换行符
Oct 11 Python
python实现用户答题功能
Jan 17 Python
Python的多维空数组赋值方法
Apr 13 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
Python中zip()函数的简单用法举例
Sep 02 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
python中round函数如何使用
Jun 19 #Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 #Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 #Python
python中怎么表示空值
Jun 19 #Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 #Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 #Python
为什么python比较流行
Jun 19 #Python
You might like
PHP重定向的3种方式
2013/03/07 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
动态样式类封装JS代码
2009/09/02 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
JavaScript Split()方法
2015/12/18 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
React Native 图片查看组件的方法
2018/03/01 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python selenium如何设置等待时间
2016/09/15 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
技术总监管理职责范本
2014/03/06 职场文书
经典公益广告词
2014/03/13 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
演讲开场白和结束语
2015/05/29 职场文书