Python的另外几种语言实现


Posted in Python onJanuary 29, 2015

Python自身作为一门编程语言,它有多种实现。这里的实现指的是符合Python语言规范的Python解释程序以及标准库等。这些实现虽然实现的是同一种语言,但是彼此之间,特别是与CPython之间还是有些差别的。

下面分别列出几个主要的实现。

1.CPython:这是Python的官方版本,使用C语言实现,使用最为广泛,新的语言特性一般也最先出现在这里。

CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

2.Jython:这是Python的Java实现,相比于CPython,它与Java语言之间的互操作性要远远高于CPython和C语言之间的互操作性。

在Python中可以直接使用Java代码库,这使得使用Python可以方便地为Java程序写测试代码,更进一步,可以在Python中使用Swing等图形库编写GUI程序。

Jython会将Python代码动态编译成Java字节码,然后在JVM上运行转换后的程序,这意味着此时Python程序与Java程序没有区别,只是源代码不一样。

在Python 中写一个类,像使用Java 类一样使用这个类是很容易的事情。

你甚至可以把Jython 脚本静态地编译为Java 字节码。

示例代码:

from java.lang import System
System.out.write('Hello World!\n')

3.Python for .NET:它实质上是CPython实现的.NET托管版本,它与.NET库和程序代码有很好的互操作性。

4.IronPython:不同于Python for .NET,它是Python的C#实现,并且它将Python代码编译成C#中间代码(与Jython类似),然后运行,它与.NET语言的互操作性也非常好。

5.PyPy:Python的Python实现版本,原理是这样的,PyPy运行在CPython(或者其它实现)之上,用户程序运行在PyPy之上。它的一个目标是成为Python语言自身的试验场,因为可以很容易地修改PyPy解释器的实现(因为它是使用Python写的)。

6.Stackless:CPython的一个局限就是每个Python函数调用都会产生一个C函数调用。 这意味着同时产生的函数调用是有限制的,因此Python难以实现用户级的线程库和复杂递归应用。一旦超越这个限制,程序就会崩溃。Stackless的Python实现突破了这个限制,一个C栈帧可以拥有任意数量的Python栈帧。这样你就能够拥有几乎无穷的函数调用,并能支持巨大数量的线程。Stackless唯一的问题就是它要对现有的CPython解释器做重大修改。所以它几乎是一个独立的分支。另一个名为Greenlets的项目也支持微线程。它是一个标准的C扩展,因此不需要对标准Python解释器做任何修改。

Python 相关文章推荐
python类参数self使用示例
Feb 17 Python
python创建关联数组(字典)的方法
May 04 Python
Python使用Scrapy爬取妹子图
May 28 Python
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
Python实现类的创建与使用方法示例
Jul 25 Python
python实现员工管理系统
Jan 11 Python
Sublime开发python程序的示例代码
Jan 24 Python
python提取图像的名字*.jpg到txt文本的方法
May 10 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
elasticsearch python 查询的两种方法
Aug 04 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
python中使用xlrd、xlwt操作excel表格详解
Jan 29 #Python
Python中实现常量(Const)功能
Jan 28 #Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 #Python
Python中的异常处理学习笔记
Jan 28 #Python
Python中集合类型(set)学习小结
Jan 28 #Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 #Python
Python实现Const详解
Jan 27 #Python
You might like
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
详解Python中for循环是如何工作的
2017/06/30 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python re模块的高级用法详解
2018/06/06 Python
python脚本开机自启的实现方法
2019/06/28 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
详解Python绘图Turtle库
2019/10/12 Python
python序列化与数据持久化实例详解
2019/12/20 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
大学校运会广播稿
2014/02/03 职场文书
会走路的树教学反思
2014/02/20 职场文书
生活部的活动方案
2014/08/19 职场文书
消防志愿者活动方案
2014/08/23 职场文书
摘录式读书笔记
2015/07/01 职场文书
初中毕业生感言
2015/07/31 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS