When using the Python Interpreter, is the compiler used at all?
在Google的Python类中,它会读取
Python is a dynamic, interpreted (bytecode-compiled) language
我知道解释器是什么,知道字节码是什么,但两者似乎不合适。 在做了一些阅读后,基本上Python源代码在被解释之前自动编译就变得更加清晰了; 但是出现了一些新问题。
使用Python解释器时,没有编译发生? 如果是的话,什么时候? 例如,如果您只是在命令行键入代码并且每次进入回车时它都会运行,那么编译器何时有机会完成其工作?
同样在上面的问题链接中,@ delnan给出了一个非常广泛的编译器定义
A compiler is, more generally, a program that converts a program in
one programming language into a program in another programming
language...JIT compilers compile to native machine code at runtime
我想我的问题是:解释器和自动编译器之间有什么区别? 要稍微改进一下这个问题,如果编译Python,为什么不一直编译到机器代码(或汇编,因为我知道编写能够生成纯机器代码的编译器很困难)?
也许最好忘记语义,并尝试了解Cpython实际上在做什么。当您调用Cpython二进制文件时,它会执行许多操作。一般来说,您可以期望它将您编写的代码转换为字节码指令序列。这是人们有时会参考python代码的"编译"阶段。这些是一种更紧凑,更有效的方式来告诉解释器除了手写代码之外还要做什么。通常,python会缓存这些文件以便在
与标准的"编译"语言(例如