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编程中字符串和列表的基本知识讲解
Oct 14 Python
详解在Python程序中自定义异常的方法
Oct 16 Python
在windows系统中实现python3安装lxml
Mar 23 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
python绘制封闭多边形教程
Feb 18 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 Python
python re.match()用法相关示例
Jan 27 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
Python列表切片用法示例
2017/04/19 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
python创建文件备份的脚本
2018/09/11 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
保护动物倡议书
2014/04/15 职场文书
捐书活动总结
2014/05/04 职场文书
课外科技活动总结
2014/08/27 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
Java对文件的读写操作方法
2022/04/29 Java/Android
详解flex:1什么意思
2022/07/23 HTML / CSS