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交互式图形编程实例(一)
Nov 17 Python
利用Python进行异常值分析实例代码
Dec 07 Python
Python实现的直接插入排序算法示例
Apr 29 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
python从子线程中获得返回值的方法
Jan 30 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
python处理“
Jun 10 Python
解析python的局部变量和全局变量
Aug 15 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
用Python提取PDF表格的方法
Apr 11 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 5.0创建图形的巧妙方法
2010/10/12 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
深入讲解Python编程中的字符串
2015/10/14 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
巴西网上药房:onofre
2016/11/21 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
init进程的作用
2015/08/20 面试题
工作失职检讨书范文
2014/01/16 职场文书
展会邀请函范文
2014/01/26 职场文书
职称评定自我鉴定
2014/03/18 职场文书
信访稳定工作汇报
2014/10/27 职场文书
幼儿园个人总结
2015/02/28 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
中秋节感想
2015/08/10 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript