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 相关文章推荐
node.js获取参数的常用方法(总结)
May 29 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
Python实现KNN邻近算法
Jan 28 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
详解python中list的使用
Mar 15 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
Python 使用多属性来进行排序
Sep 01 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
基于python实现语音录入识别代码实例
Jan 17 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
python实现发送邮件
Mar 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
15种PHP Encoder的比较
2007/04/17 PHP
php读取msn上的用户信息类
2008/12/05 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
destoon各类调用汇总
2014/06/20 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
jQuery链使用指南
2015/01/20 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
python解析xml文件操作实例
2014/10/05 Python
Python实现端口检测的方法
2018/07/24 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Django后台admin的使用详解
2019/07/08 Python
Python实现分数序列求和
2020/02/25 Python
pandas DataFrame运算的实现
2020/06/14 Python
德国高尔夫商店:Par71.de
2020/11/29 全球购物
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
职代会闭幕词
2015/01/28 职场文书
出国留学自荐信模板
2015/03/06 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书