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

python.org提到CPython是:

Python的“传统”实现(昵称为CPython)

还有一个Stack Overflow问题提到:

CPython是Python的默认字节码解释器,Python是用C语言编写的。

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

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


当前回答

The original, and standard, implementation of Python is usually called CPython when you want to contrast it with the other options (and just plain “Python” otherwise). This name comes from the fact that it is coded in portable ANSI C language code. This is the Python that you fetch from http://www.python.org, get with the ActivePython and Enthought distributions, and have automatically on most Linux and Mac OS X machines. If you’ve found a preinstalled version of Python on your machine, it’s probably CPython, unless your company or organization is using Python in more specialized ways.

除非你想用Python编写Java或。net应用程序的脚本,或者找到其中的好处 如果你不想使用Stackless或PyPy,你可能想使用标准的CPython系统。 因为它是该语言的参考实现,所以它倾向于运行 最快、最完整、比替代方案更新更及时、更健壮 系统。

其他回答

你应该知道CPython并不真正支持多线程(它支持,但不是最优的),因为全局解释器锁。它也没有递归的优化机制,并且有许多其他实现和库试图填补的限制。

你应该看看python wiki上的这个页面。

看看本页上的代码片段,它会让你很好地了解解释器是什么。

那么什么是CPython呢?

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

后一部分是你困惑的来源;你需要将Python语言与运行Python代码的任何东西分开。

CPython恰好是用c实现的,这只是一个实现细节。CPython将Python代码编译为字节码(透明地),并在计算循环中解释该字节码。

CPython也是第一个实现新特性的;python语言开发以CPython为基础;接下来是其他实现。

Jython等等呢?

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

实际上是编译成C语言

所以CPython本身不会将Python代码转换为C语言。相反,它运行解释器循环。有一个项目可以将python代码转换为C语言,这个项目叫做Cython。Cython为Python语言添加了一些扩展,并允许您将代码编译为C扩展,即插入到CPython解释器中的代码。

implementation是指使用什么语言来实现Python,而不是如何实现Python代码。使用CPython的优点是C运行时的可用性以及与C/ c++的容易集成。

所以CPython最初是使用c实现的。原始实现的其他分支使Python能够利用Java (JYthon)或。net Runtime (IronPython)。

根据您使用的实现,库的可用性可能会有所不同,例如,在Jython中不可用Ctypes,因此任何使用Ctypes的库都不能在Jython中工作。类似地,如果你想使用Java类,你不能直接从CPython中这样做。你要么需要一个胶水(JEPP),要么需要使用Jython (Python的Java实现)

本文详细解释了Python的不同实现之间的区别。就像这篇文章说的:

首先要意识到“Python”是一个接口。有一个 Python应该做什么以及它应该如何表现(如 任何接口)。并且有多种实现(如 任何接口)。 要意识到的第二件事是“解释”和“编译” 实现的属性,而不是接口的属性。

编程语言实现是执行计算机程序的系统。

编程语言实现有两种一般方法:

解释:解释器将某种语言的程序作为输入,并在某些机器上执行用该语言编写的操作。 编译:编译器将某种语言的程序作为输入,并将该程序翻译成另一种语言,该语言可作为另一解释器或另一编译器的输入。

Python是一种解释性高级编程语言,由Guido van Rossum于1991年创建。

CPython是Python计算语言的参考版本,它也是由Guido van Rossum创建的C语言编写的。

Python实现的其他列表