关于c ++:CPython是字节码解释器吗?

CPython is bytecode interpreter?

在CPython的上下文中,我并没有真正理解"字节码解释器"的概念。 有人可以阐明整个情况吗?

这是否意味着CPython将编译并执行pyc文件(字节码文件?)。 那么什么将py文件编译为pyc文件呢? Jython与CPython有何不同(除了它们以不同的语言实现)。

我还在某处读到Python是C ++解释。 它是否正确? 那是什么意思呢?

我对Python还是很陌生,所以请问我这个愚蠢的问题吧。
非常感谢!


CPython是C语言中Python的实现。它是第一个实现,仍然是人们谈论Python时所指的主要实现。它将.py文件编译为.pyc文件。 .pyc文件包含字节码。 CPython实现还解释那些字节码。
CPython不是用C ++编写的,而是C。

从.py到.pyc的编译根据需要透明进行。执行.py文件时,如果需要,它将首先编译为.pyc文件,然后将解释.pyc文件。

Jython有所不同,因为(除了用Java代替C之外,Jython还将.py文件编译成.class文件,以便可以在JVM中执行它们。


首先:作为python的用户,CPython是字节码解释器这一事实对您来说并不重要。继续编写代码,不要担心它将如何变成行动。

因此,为回答您的问题并满足您的好奇心,请执行以下操作:CPython读取python源代码,并将其编译为python字节码,该字节码存储在.pyc文件中。然后,它使用字节码解释器执行该代码。这种设计将python的解析与执行分开,从而使解释器的两个部分都更加简单。

Jython只是前半部分-它读取Python源代码,并输出Java字节码,然后由JVM对其进行解释。它与CPython的体系结构相同,但有两个值得注意的区别:一:Java字节码是标准化的并记录在案,而CPython字节码被认为是python内部的,并且可以随时更改。第二:JVM比CPython解释器复杂得多。 JVM具有世界上最先进的JIT引擎之一,而CPython解释器非常简单。


CPython既是字节码编译器,又是解释器(虚拟机)。

它会自动检测是否不存在现有的预编译器文件(.pyc),编译代码并将其保存。