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 20 Python
python实现从web抓取文档的方法
Sep 26 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
Python3 queue队列模块详细介绍
Jan 05 Python
pandas series序列转化为星期几的实例
Apr 11 Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
Django框架使用内置方法实现登录功能详解
Jun 12 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
python flask中动态URL规则详解
Nov 22 Python
Python通过socketserver处理多个链接
Mar 18 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 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实现删除非站内外部链接实例代码
2014/06/17 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
Flask之flask-session的具体使用
2018/07/26 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
如何开启linux的ssh服务
2015/02/14 面试题
大专毕业生自我评价分享
2013/11/10 职场文书
教育局长自荐信范文
2013/12/22 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
党支部特色活动方案
2014/08/20 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技
Golang 切片(Slice)实现增删改查
2022/04/22 Golang
MySQL优化之慢日志查询
2022/06/10 MySQL
React自定义hook的方法
2022/06/25 Javascript