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应用程序在windows下不出现cmd窗口的办法
May 29 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
Zabbix实现微信报警功能
Oct 09 Python
神经网络python源码分享
Dec 15 Python
python3使用pandas获取股票数据的方法
Dec 22 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python多进程编程常用方法解析
Mar 26 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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获取文章上一页与下一页的方法
2014/12/01 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
python实现无证书加密解密实例
2014/10/27 Python
Python中文件操作简明介绍
2015/04/13 Python
在Python中进行自动化单元测试的教程
2015/04/15 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
社区两委对照检查材料
2014/08/23 职场文书
公司员工离职证明书
2014/10/04 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
科级干部培训心得体会
2016/01/06 职场文书
四年级作文之植物
2019/09/20 职场文书