admin管理员组

文章数量:1530265

导读:众所周知,Python 是广泛用于通用编程的高级编程语言。但是谈论 Python 我们不仅意味着语言,还包括其实现,因为 Python 实际上是可以以许多不同方式实现的语言的规范。Python 的解释器可用于许多操作系统,以便其代码可以运行在各种各样的操作系统上。

在这里,我们想通过介绍一些 Python 的实现,来说明者真的是一个庞大的家族。

CPython

CPython 被认为是用 C 编写的 Python 的「默认」实现,该实现将 Python 代码编译为中间字节码,最后由虚拟机解释执行。CPython 使得编写 C 扩展非常容易,因为最终 Python 代码由 C 语言解释器执行。

CPython 提供与 Python 软件包和 C 扩展模块最高级别的兼容性。

如果你正在编写一个开源的 Python 项目,CPython 是最好的选择,你的目标是大规模地吸引用户,而且它也是唯一可以使用 C 扩展功能的软件包。

Jython

Jython 是一个可以和 Java 程序一起运行的 Python 实现。Python 代码被它编译为 Java 字节码,然后由 Java 虚拟机即 JVM 执行。

此外,可以不用花费太多力气就可以导入任何 Java 类。

Jython 绝对是你正在寻求与现有 Java 代码库进行接口链接或者需要为 JVM 编写 Python 代码的任何其他原因的主要选择。

IronPython

IronPython 也是普及的 Python 实现之一,它以 .NET 框架库为目标,并且完全用C#编写。

它在 .NET 虚拟机上运行,与 JVM 相当,可以将 .NET 代码暴露给 .NET 框架中的其他语言, IronPython 支持 Python 2.7。

这是 Windows 开发人员的理想选择,因为 IronPython 通过 Visual Studio 的 Python 工具直接集成到 Visual Studio 开发环境中。(VS 大法强无敌)

PyPy

PyPy 是将 JIT(即时编译器)带入 Python 的一种实现。它可能有些不好理解。

Pypy 其实是两个东西。一方面,它是一个用 RPython 编写的 Python 解释器,它是具有静态类型的 Python 的一个子集;但是另一方面,它也是一个编译器,用于在 JIT 中编译各种目标的 RPython 代码,其默认平台为 C,但也支持 JVM 或者其他。这样一来,PyPy 可以动态地将 JIT 添加到解释器中,生成自己的编译器。 因此,结果是独立的可执行文件,这些可执行文件可以解释 Python 源代码并利用 JIT 优化。

如果你需要为自己的 Python 代码增加的性能,Pypy 值得一试。它目前比 CPython 快 5 倍以上,并且支持 Python 2 和 Python 3。

PythonNet

Python for .NET 是一个提供与 .NET 公共语言运行时(CLR)无缝集成的软件包。该软件包允许使用以任何语言编写的 .NET 服务和组件(以托管C ++,C#,VB,JScript)为基础构建整个应用程序。它为 .NET 开发人员提供了强大的应用程序脚本工具,允许使用 CLR 服务,并可以继续使用现有的 Python 代码和基于 C 的扩展,同时维护 Python 代码的本机执行速度。

Python for .NET 使用标准的 CPython 运行时,很方便就可以将 .NET 中的一个或两个组件集成到标准的 Python 应用程序中,但是它不会从 Python 代码产生托管代码(IL)。

Python for .NET 是根据开源 MIT 许可证发布的,并支持从 Python 2.6 到 Python 3.5 和 3.6,除了 IronPython 之外,它都可以没有冲突地运行。

Cython

Cython 是一个包括绑定到调用 C 函数静态编译器,它用于 Python 编程语言和扩展 Cython 编程语言(基于Pyrex)。

Cyton 允许轻松编写 Python 代码的 C 扩展,还可以在现有的 Python 代码中添加静态类型,但是在这里你必须强制输入用户的代码,然后将其传递给编译器(类似于 Pypy,但不完全)。

Cython 是可以用于快速 C 模块的理想语言,可以加速执行 Python 代码,包装外部 C 库并将CPython 嵌入到现有应用程序中。

MicroPython

MicroPython 是 Python 3 的高效实现,一个用 C99 编写的完整的 Python 编译器和运行时。 它在受限环境中的微控制器上运行,并且包含了 Python 标准库的一小部分,它是一个交互式提示命令(REPL,a.k.a. Read-eval-print 循环),能够立即执行命令。

MicroPython 是由一个紧凑的电子电路板的 MicroPython pyboard 在裸机上运行的。因此,你可以获得一个低级别的 Python 操作系统,除了能够从内置文件系统运行和导入脚本之外,还可以方便地控制各种电子项目。

这种实现充满了先进的功能,而且由于采用了许多先进的编码技术,它的结构紧凑。它的目标是与普通 Python 尽可能兼容。

结论

您可以看到,有相当多的 Python 实现使得 Python 家族如此广泛和多样化,而且还有更多的通用命名和通用引用「Python」工具可以有完全不同的用途。

扩展阅读:

欢迎关注:知乎专栏「极光日报」,每天为 Makers 导读三篇优质英文文章。

网易云电台「极光日报」,上下班路上为你读报。

微信公众号「极光开发者」,每周两篇技术类干货。

本文标签: 庞大有多家族标准Python