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中requests模块的使用方法
Apr 08 Python
Python中的元类编程入门指引
Apr 15 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
Python实现屏幕截图的两种方式
Feb 05 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python的debug实用工具 pdb详解
Jul 12 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
Sep 26 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Python中logger日志模块详解
Aug 04 Python
python学习之panda数据分析核心支持库
May 07 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
模仿OSO的论坛(二)
2006/10/09 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
javascript如何写热点图
2015/12/08 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
python保存网页图片到本地的方法
2018/07/24 Python
Python实现分段线性插值
2018/12/17 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
Python for循环及基础用法详解
2019/11/08 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
物流专业自荐信
2014/05/23 职场文书
初中生物教学随笔
2015/08/15 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
创业计划书之花店
2019/09/20 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python