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自动化测试之连接几组测试包实例
Sep 28 Python
Mac 上切换Python多版本
Jun 17 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
把pandas转换int型为str型的方法
Jan 29 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 Python
python输出pdf文档的实例
Feb 13 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
python使用多线程查询数据库的实现示例
Aug 17 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 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输出表格的实现代码(修正版)
2010/12/29 PHP
header导出Excel应用示例
2014/01/24 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python标准库os.path包、glob包使用实例
2014/11/25 Python
python线程、进程和协程详解
2016/07/19 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
详解python中asyncio模块
2018/03/03 Python
详解python持久化文件读写
2019/04/06 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
工商管理毕业生推荐信
2013/12/24 职场文书
大学生的网上创业计划书
2013/12/31 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
超市创业计划书
2014/09/15 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
MySQL批量更新不同表中的数据
2022/05/11 MySQL
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js