Python的另外几种语言实现

作者:junjie 时间:2023-05-29 15:39:03 

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,实现
0
投稿

猜你喜欢

  • python3下载抖音视频的完整代码

    2023-12-24 01:10:42
  • Python实现partial改变方法默认参数

    2022-10-30 20:23:33
  • Python实现的栈(Stack)

    2022-12-18 20:35:51
  • SQL Server 数据库故障修复顶级技巧之一

    2010-05-01 18:49:00
  • 把pandas转换int型为str型的方法

    2022-02-16 15:45:03
  • ​如何愉快地迁移到 Python 3

    2021-06-25 19:44:17
  • Python异步爬虫requests和aiohttp中代理IP的使用

    2021-06-26 11:56:05
  • perl 调试命令的相关知识小结

    2022-10-01 14:09:48
  • Python机器学习NLP自然语言处理基本操作词向量模型

    2022-01-16 10:33:42
  • 前端模板引擎

    2010-07-27 12:33:00
  • SQL Server双服务器架设并数据自动同步教程

    2023-07-03 02:59:53
  • 基于域名的方式访问Istio服务网格中的多个应用程序的方法详解

    2022-04-07 11:39:56
  • ajax+node+request爬取网络图片的实例(宅男福利)

    2024-05-05 09:21:11
  • FckEditor 中文配置手册

    2022-05-20 22:23:13
  • python访问sqlserver示例

    2022-07-15 07:25:01
  • 最新anaconda安装配置教程

    2021-07-17 05:05:34
  • PHP PDOStatement::getAttribute讲解

    2023-06-05 07:29:31
  • MYSQL教程:如何选择正确的数据列类型

    2009-02-27 16:05:00
  • 在Python的一段程序中如何使用多次事件循环详解

    2023-04-08 03:33:28
  • MySQL查询优化的5个实用技巧

    2024-01-19 03:30:36
  • asp之家 网络编程 m.aspxhome.com