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 23 Python
python代码检查工具pylint 让你的python更规范
Sep 05 Python
python实现sublime3的less编译插件示例
Apr 27 Python
Python 模板引擎的注入问题分析
Jan 01 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
python 获取字符串MD5值方法
May 29 Python
python assert的用处示例详解
Apr 01 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
keras之权重初始化方式
May 21 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
python爬虫用mongodb的理由
Jul 28 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实现的策略模式简单示例
2017/08/25 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
详解JavaScript函数
2015/12/01 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
JavaScript初学者必看“new”
2017/06/12 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
大四毕业生学习总结的自我评价
2013/10/31 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
企业元宵节主持词
2014/03/25 职场文书
暑期培训心得体会
2014/09/02 职场文书
领导班子整改措施
2014/10/24 职场文书
计划生育目标责任书
2015/05/09 职场文书
初中班长竞选稿
2015/11/20 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
MySql分区类型及创建分区的方法
2022/04/13 MySQL
nginx配置限速限流基于内置模块
2022/05/02 Servers
代码复现python目标检测yolo3详解预测
2022/05/06 Python