Python常用编译器原理及特点解析


Posted in Python onMarch 23, 2020

python要知道怎么用好编译器。当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器,比如:

CPython

当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

以上的你都见过吧:虽然Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Django模板的使用方法(图文)
Nov 04 Python
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
python中redis的安装和使用
Dec 04 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
python实现教务管理系统
Mar 12 Python
Python发送http请求解析返回json的实例
Mar 26 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
pycharm 添加解释器的方法步骤
Aug 31 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 #Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 #Python
python实现图像拼接功能
Mar 23 #Python
Python猴子补丁Monkey Patch用法实例解析
Mar 23 #Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 #Python
Python3 pickle对象串行化代码实例解析
Mar 23 #Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 #Python
You might like
笑谈配置,使用Smarty技术
2007/01/04 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
jquery编写日期选择器
2017/03/16 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python实现端口复用实例代码
2014/07/03 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
django解决跨域请求的问题
2018/11/11 Python
Python爬虫文件下载图文教程
2018/12/23 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
Python3.4解释器用法简单示例
2019/03/22 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
春节请假条
2014/04/11 职场文书
会计学自荐信
2014/06/03 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
员工工作自我评价
2014/09/26 职场文书
个人年底工作总结
2015/03/10 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
Python可视化学习之seaborn调色盘
2022/02/24 Python
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL