为什么Python在执行之前没有发现错误?

Are*_*res 4 python

假设我在Python中有以下代码:

a = "WelcomeToTheMachine"
if a == "DarkSideOfTheMoon":
    awersdfvsdvdcvd
print "done!"
Run Code Online (Sandbox Code Playgroud)

为什么不出错?它甚至如何编译?在Java或C#中,这将在编译期间被发现.

Jon*_*ace 8

Python不是一种编译语言,这就是为什么你的代码不会抛出编译错误的原因.

Python是一种字节码解释语言.从技术上讲,源代码被"编译"为字节代码,但是如果使用PyPy或Pyston,字节代码就是及时编译(JIT),否则它是逐行解释的.

工作流程如下:

您的Python代码 - > 编译器 - > .pyc文件 - > 解释器 - > 您的输出

使用标准的python运行时这是什么意思?基本上所有繁重的工作都在运行时发生,与C或C++不同,其中完整的源代码在编译时被分析并转换为二进制.

  • 此外,Python的标准实现不执行JIT.PyPy做JIT,但大多数人都不使用PyPy. (2认同)