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学习之编写查询ip程序
Feb 27 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
Python随机读取文件实现实例
May 25 Python
python爬取淘宝商品详情页数据
Feb 23 Python
Python批量发送post请求的实现代码
May 05 Python
Python 实现网页自动截图的示例讲解
May 17 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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
php socket通信简单实现
2016/11/18 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
Python数组遍历的简单实现方法小结
2016/04/27 Python
Python AES加密模块用法分析
2017/05/22 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
vue+django实现下载文件的示例
2021/03/24 Vue.js
关于青春的演讲稿500字
2014/08/22 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
校园运动会广播稿
2014/10/06 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
离婚起诉书范本
2015/05/18 职场文书
办公室规章制度范本
2015/08/04 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
Python pygame实现中国象棋单机版源码
2021/06/20 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL