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的Django框架中创建模板库的方法
Jul 20 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
Pandas 同元素多列去重的实例
Jul 03 Python
利用Python求阴影部分的面积实例代码
Dec 05 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
python 实现两个线程交替执行
May 02 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
django rest framework 过滤时间操作
Jul 12 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
Python词云的正确实现方法实例
May 08 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
python读取文件名称生成list的方法
2018/04/27 Python
Python continue继续循环用法总结
2018/06/10 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
2014新年元旦活动策划方案
2014/02/18 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
校庆接待方案
2014/03/18 职场文书
大一新生学期自我评价
2014/04/09 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
《雪儿》教学反思
2014/04/17 职场文书
倡议书格式模板
2014/05/13 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫