CPython是字节码解释器吗?

huy*_*huy 9 c++ python interpreter bytecode cpython

我并没有在CPython的上下文中得到"字节码解释器"的概念.有人可以对整个画面有所了解吗?

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

我还在某处读过Python是C++的解释.它是否正确?这意味着什么?

我对Python仍然很陌生,所以如果我问一些愚蠢的问题,请原谅我......非常感谢你!

Ned*_*der 14

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

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

Jython是不同的,因为(除了用Java而不是C实现)它将.py文件编译成.class文件,以便它们可以在JVM中执行.

  • 如果需要,AFAIK Jython可以将Java作为中间形式生成,但它通常只生成Java字节码. (5认同)

Sea*_*lan 12

第一:CPython是一个字节码解释器的事实对你来说不应该是python的用户.继续编写代码,不要担心它是如何变成行动的.

所以,为了回答你的问题并满足你的好奇心,接下来会发生什么:CPython读取python源代码,并将其编译成python字节代码,存储在.pyc文件中.然后它使用字节码解释器执行该代码.这种设计将python的解析与执行分开,允许解释器的两个部分更简单.

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


unw*_*ind 8

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

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