Python vs Cpython

2024-03-28 23:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

关于Python和CPython(Jython,IronPython)有什么大惊小怪的,我不明白:

python.org提到CPython是:

The "traditional" implementation of Python (nicknamed CPython)

yet another Stack Overflow question提到:

CPython is the default byte-code interpreter of Python, which is written in C.

老实说,我不明白这两种解释的实际含义,但我认为,如果我使用C python,这意味着当我运行一个示例python代码时,它会将其编译成C语言,然后像执行C代码一样执行它

那么CPython到底是什么,与python相比有什么不同,我应该使用CPython而不是python,如果是,它的优点是什么?


Tags: ofthe代码orgisstackanotherjython
3条回答

这个article彻底解释了Python不同实现之间的区别。正如文章所说:

The first thing to realize is that ‘Python’ is an interface. There’s a specification of what Python should do and how it should behave (as with any interface). And there are multiple implementations (as with any interface).

The second thing to realize is that ‘interpreted’ and ‘compiled’ are properties of an implementation, not an interface.

您需要区分语言和实现。Python是一种语言

根据Wikipedia,“编程语言是编写程序的符号,是计算或算法的规范”。这意味着它只是编写代码的规则和语法。另外,我们还有一个programming language implementation,在大多数情况下,它是实际的解释器或编译器。

Python是一种语言。 C Python是Python在C中的实现,Jython是Java中的实现,以此类推。

总而言之:您已经在使用CPython(如果您是从here下载的)。

那么什么是CPython?

CPython是最初的Python实现。它是从Python.org下载的实现。人们称之为CPython是为了将它与其他的、后来的Python实现区分开来,并将语言引擎的实现与Python编程语言本身区分开来。

后一部分是您的困惑的来源;您需要让Python语言与运行Python代码的分开。

CPython碰巧是用C实现的,实际上,这只是一个实现细节。CPython将Python代码编译成字节码(透明地),并在计算循环中解释该字节码。

CPython也是第一个实现新特性的;Python语言开发使用CPython作为基础;其他实现也遵循。

Jython等怎么样。?

JythonIronPythonPyPy是当前Python编程语言的“其他”实现;它们分别用Java、C和RPython(Python的一个子集)实现。Jython将您的Python代码编译成Java字节码,这样您的Python代码就可以在JVM上运行。IronPython允许您在Microsoft CLR上运行Python。PyPy是用Python(一个子集)实现的,它允许您比CPython更快地运行Python代码,这应该会让您大吃一惊。:-)

实际编译为C

因此,C Python本身不会将Python代码转换为C。相反,它运行一个解释器循环。这里的一个将Python-ish代码转换为C的项目,这个项目被称为Cython。Cython为Python语言添加了一些扩展,并允许您将代码编译为C扩展,这些代码将插入到CPython解释器的中。

相关问题 更多 >