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