据我所知,CPython程序被编译成中间字节码,由虚拟机执行。那么如何在不事先知道CPython是用C语言编写的情况下进行识别。是否有两种常见的DNA可以匹配来识别它?
答案 0 :(得分:17)
解释器是用C语言编写的。
它将Python代码编译为字节码,然后评估循环解释该字节码以运行您的代码。
通过查看Python的源代码,您可以识别Python的内容。例如,请参阅source for the evaluation loop。
请注意,Python.org实现只是一个Python实现。我们将其称为CPython,因为它是用C实现的。还有其他实现,用其他语言编写。 Jython是用Java编写的,IronPython是用C#编写的,然后有PyPy,它是用Python的(子集)编写的,并运行许多任务faster than CPython。 / p>
答案 1 :(得分:12)
Python不是用C语言编写的。可以说,Python是使用BNF以深奥的英语方言编写的。
但是,以下所有陈述都是正确的:
您可以无限期地添加更多图层:考虑您的"硬件处理器"可能真的是一个软件仿真,或硬件处理器可能有一个前端解码他们的" native"指令设置为另一个内部字节码。
所有这些层都是由它们所做的(根据某些规范执行或解释指令)定义的,而不是它们如何实现它。
哦,我跳过了编译步骤。 C编译器通常用C语言编写(并且将任何语言编写到可以编译自身的阶段,这在传统上很重要),但它也可以用Python或Java编写。同样,编译器由它的作用定义(根据语言规范将某些源语言转换为某些输出,如字节码),而不是如何实现。
答案 2 :(得分:1)