在 CPython 的上下文中,我并没有真正理解“字节码解释器”的概念。有人可以对整个图片有所了解吗?
这是否意味着CPython将编译并执行pyc文件(字节码文件?)。那么什么编译py文件到pyc文件呢?Jython 与 CPython 有何不同(除了它们是用不同的语言实现的)。
我还在某处读到 Python 是 C++ 解释。这个对吗?那是什么意思?
我对 Python 还是很陌生,所以如果我问愚蠢的问题,请原谅我......非常感谢!
在 CPython 的上下文中,我并没有真正理解“字节码解释器”的概念。有人可以对整个图片有所了解吗?
这是否意味着CPython将编译并执行pyc文件(字节码文件?)。那么什么编译py文件到pyc文件呢?Jython 与 CPython 有何不同(除了它们是用不同的语言实现的)。
我还在某处读到 Python 是 C++ 解释。这个对吗?那是什么意思?
我对 Python 还是很陌生,所以如果我问愚蠢的问题,请原谅我......非常感谢!
CPython 是 Python 在 C 中的实现。它是第一个实现,并且仍然是人们谈论 Python 时所指的主要实现。它将 .py 文件编译为 .pyc 文件。.pyc 文件包含字节码。CPython 实现也解释这些字节码。CPython 不是用 C++ 编写的,它是 C。
从 .py 到 .pyc 的编译会根据需要透明地进行。当您执行 .py 文件时,如果需要,它将首先编译为 .pyc 文件,然后将解释 .pyc 文件。
Jython 是不同的,因为(除了用 Java 而不是 C 实现之外)它将 .py 文件编译成 .class 文件,因此它们可以在 JVM 中执行。
第一:CPython 是一个字节码解释器这一事实对你作为 python 用户来说并不重要。继续写代码,不要担心它是如何变成行动的。
因此,为了回答您的问题并满足您的好奇心,下面是发生的情况:CPython 读取 python 源代码,并将其编译为存储在 .pyc 文件中的 python 字节码。然后它使用字节码解释器执行该代码。这种设计将python的解析与执行分开,让解释器的两个部分都更简单。
Jython 只是前半部分——它读取 Python 源代码,并输出 Java 字节码,然后由 JVM 解释。它与 CPython 的架构相同,但有两个值得注意的区别:一:java 字节码是标准化和文档化的,而 CPython 字节码被认为是 python 内部的,可以随时更改。第二:JVM 比 CPython 解释器复杂得多。JVM 拥有世界上最先进的 JIT 引擎之一,而 CPython 解释器非常简单。
CPython 既是字节码编译器,也是解释器(虚拟机)。
它会自动检测是否不存在现有的预编译器文件 (.pyc),编译代码并将其保存。