21CTO导读:其实,Python 编程语言是一种规范,它能以多种方式执行。Python 语言的每一个版本都使用了一个强大的解释器。都有哪些呢,我们一起看一看~
毫无疑问,Python 是近年来最流行的编程语言之一 。在过去的几年中,它在全球的开发者社区中迅速普及。其中CPython 是默认的 Python 解释器,实际上,开发者还可以使用其他解释器选项。
Python 是一种高级编程语言,这意味着它的代码是以人类可阅读的形式编写的。尽管如此,计算机并不理解高级语言,它需要翻译器将高级代码转换为机器代码,以便操作系统可以执行相同逻辑的代码,这就是解释器发挥作用的地方。
Python语言使用解释器作为计算机的翻译工具来翻译和执行代码。当我们在系统上安装 Python 时,系统会安装 Python 解释器,以便更轻松地阅读和执行 Python。
在本文中,我们列出了 2023年 6 个最佳 Python 解释器 ,它们都非常适合与Python 编程语言一起使用。
什么是解释器?
解释器是一种直接执行编程代码,而不将其转换为机器语言或字节码的计算机程序。
它与编译器不同,解释器不会为字节码生成单独的文件,而是直接执行源代码。
什么是 Python 解释器?
如果我们简单地定义Python解释器,可以说Python解释器是执行Python源代码的程序。
Python 解释器这个术语有不同的使用方式。
有时,它指的是我们在终端或命令提示符下使用命令获得的Python交互式shell python 。有时,它指的是我们安装在系统上用于执行Python程序的完整实现或程序。
实际上,Python解释器是执行Python代码对象的最后一步工具。在源代码到达 Python 解释器之前,它会经历三个步骤:词法分析、解析与编译,将高级源代码转换为结构化代码对象。最后,Python 解释器执行该结构化代码对象。
Python 解释器是如何工作的?
Python的代码执行是一个过程,它共分为如下4步:
词法分析: 在词法分析过程中,词法分析器将源代码行分解为标记。
解析: 在这一步中,解析器使用令牌通过描述令牌之间的关系来生成结构“抽象语法树(AST)”。
编译: Python 还包含一个编译器,可以将 AST 编译成代码对象。其存储为 pyc 或 .pyo 文件。
解释: 当编译器将 AST 结构转换为代码对象时,Python 解释器就会执行该代码对象。
在Python 中,确实还包含一个隐藏的编译器,但它仍被称为“解释性编程语言”。因为Python的解释器相对来说比编译器做了更多的工作 。源代码的词法分析、解析和编译 .pyc 都是 .pyo 在内部完成的,通过 Python 实现对开发人员隐藏。
6 个最佳 Python 解释器(Python 实现)精选清单
Python 社区广泛使用的原始 Python 实现是用 C 编程语言编写的,该实现出现在 python 官方网站 上,这就是我们称之为 CPython 的原因。
与 CPython 一样,Python 编程语言还有许多其它实现(解释器)。显然,并非所有这些都很好用。因此,这里列出了 2022 年排名前 5 位的 Python 解释器,你可以探索并使用它们来扩展自己的 Python 知识:
CPython
pypy
stackless Python
Jython
ironpython
GraalPython
让我们继续讨论其中的每一个:
1.CPython(默认Python解释器)
GitHub 存储库:https: //github.com/python/cpython
Python 3.x 版本支持
如果你是从官方网站安装Python的,CPython 将作为Python的默认解释器。CPython 是用 C 和 Python 编程语言 编写的 ,这就是它的名字的由来。
此外,如果我们看看 Python 在全球的整体使用情况,CPython 是高级编程语言中使用最广泛的实现。CPython 由核心开发人员和 Python 社区开发,并得到 Python 软件基金会的支持。
虽然它是一个解释器,但它也充当编译器。这是因为它执行一些编译操作,将Python代码转换为字节码,然后使用解释器来执行它们。这一切都是虚拟发生的,因此,从技术上讲,它不是编译器。
因此,如果您正在编写想要作为开源项目与社区共享的 Python 代码,则必须以 CPython 用户为目标,因为它显然具有最广泛的影响力。
2.PyPy
网址:https: //pypy.org/
Python 2.x 和 3.x 版本支持
PyPy 是 Python 编程语言的强大、快速且完全兼容的实现。此外,它还被认为是 CPython 的第一替代品。与 CPython 相比,PyPy 速度更快,因为它是即时 (JIT) 编译器。
相反,CPython 是一个解释器。除了依赖于 CPython 扩展的代码之外,任何 Python 代码都可以在 PyPy 上运行。尽管 PyPy 是一个解释器,但它在内部使用元跟踪,这是一种将解释器转换为即时编译器的技术。使用解释器非常容易,但与编译器相比,它们通常执行代码的速度很慢。因此,PyPy 通过将自身转变为 JIT 编译器来解决 Python 解释器的这个问题。
强烈建议那些想要提高程序性能的人使用 PyPy。如果您使用 PyPy 运行 Python 程序,那么它将比 CPython 消耗更少的内存。
3.Stackless Python
GitHub 存储库: https ://github.com/stackless-dev/stackless
Python 3.x 版本支持
Stackless Python 是另一种强大的 Python 编程语言解释器。与 CPython 一样,它也是用 C 和 Python 编写的。顾名思义,Stackless Python 避免了 C 调用堆栈。调用堆栈是 保存子程序并决定函数调用的控制流程的堆栈数据结构 。
尽管 Stackless Python 避免了堆栈调用,但它使用堆栈来进行函数调用。除了其他功能之外,Stackless Python 还增加了对协程、通信通道和任务序列化的支持。微线程是Stackless Python最重要的特性。它可以避免与通常的操作系统线程相关的大部分开销。
4.Jython
GitHub 存储库:https: //hg.python.org/jython
支持:Python 2.X 版本
Jython 是由 Python 的语言实现,它有助于在 Java 平台上运行 Python 代码。由于该工具最初是用 Java 和 Python 编写的,因此它的正式名称为 JPython,但在 1999 年,它更名为 Jython。
Jython 最初于 1997 年推出,其目标是用 Java 替代 C,以实现 Python 程序访问的性能密集型代码。使用 Jython,你可以导入和使用任何 Java 和 Python 模块,但以 C 语言实现的模块除外。
Jython 可以将 Python 源代码编译为 Java 字节代码,以便 Java 虚拟机 (JVM) 可以执行它。因此,如果你使用的是 Python2.x 版本并希望在 JVM 中运行 Python 代码,则需要 Jython。
5. IronPython
网址:https: //ironpython.net/
由 Python 2.x 版本支持 IronPython 是 Python 编程语言的开源实现,它用 C# 编写。IronPython 的唯一目标是促进与 Microsoft .NET 框架的无缝集成,以便 Python 开发人员可以同时使用 .NET 和 Python 扩展库 。
IronPython 在动态语言基础设施 (DLR) 和公共语言基础设施之上实现,支持动态语言的动态类型和动态方法分派等。尽管 IronPython 使用率并不高,但是仍有一群志愿者在 GitHub 上维护着这个项目。
6.GraalPython
网址:https: //github.com/oracle/graalpython
Python 3 版本支持
GraalPython 是 GraalVM 的一个实验性 Python 实现。它是一个与 GraalVM 编译器集成的全新 Python 实现。这个 Python 实现是用 Java 编写的,并在 Truffle 框架的帮助下在 GraalVM 上实现。GraalPython 旨在支持 SciPy 库,它可以像 CPython 一样快速地执行纯 Python 代码。
2023 年,应该选择哪个 Python 解释器和版本?
Python 社区中有 2 个核心版本:
Python 2.x
Python 3.x
最初,Python2 和 Python3 之间总是存在混淆,但现在很明显,Python3 是唯一可供选择和学习的 Python 实现。社区宣布Python2版本已经不再更新,今后Python 3.x版本将成为主流。
所以现在,Python 3.x 版本是你的最终选择,这是理所当然的。Python 开发者社区和 CPython 核心开发者社区已经退出了 Python 2 系列。由于不会为 Python 2.x 版本提供更新,因此,开发者最好的也是唯一的选择是 2022 年以后发布的 Python 3。
该使用哪种 Python 解释器?
虽然Python有很多实现或解释器,但大家使用的都是CPython,因为它是Python的第一个实现。也有可能,你从未使用过甚至没有听说过除 CPython 之外的其他 Python 实现。许多Python学习者甚至不知道他们使用的Python实际上被称为CPython。
我们在上一节中提到的前 6 个 Python 解释器列表并不是唯一可用的 Python 解释器,还有其他的很多的解释器,但其中大多数都是不活跃的,并且没有定期维护。除 CPython 之外的所有解释器都是替代 Python 解释器,这表示着它们均源自 CPython。
结论
在本文中,我们讨论了 Python 的不同解释器。
Python解释器是Python的各种实现,用于方便根据不同的编程语言进行开发。CPython 是广泛使用的 Python 解释器。python.org 提供的实际 Python 3 系列是 CPython。对于一个 Python开发者 来说 ,了解Python的其他实现也非常重要。
希望这篇有关 5 个最佳 Python 解释器的文章,能让你对不同的 Python 解释器以及 Python 解释器的一般工作原理有足够的了解,编码愉快!
作者:写代码的大雄
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。