我知道Python解释器逐行执行命令而不在开始时编译整个程序。但是,我不理解为什么它会在下一行中捕获语法错误而不执行起始行。
例如,在脚本中,如果我写下列语句:
print("I am first")
print("Second")
print(third") # Syntax error. Missed one "
这会产生以下输出:
File "script2.py", line 3
print(third")
^
SyntaxError: EOL while scanning string literal
我期待输出如下:
I am first
Second
File "script2.py", line 3
print(third")
^
SyntaxError: EOL while scanning string literal
我很想知道为什么Python解释器会表现出这种行为。
答案 0 :(得分:0)
Python不直接解释代码,因为它效率不高。
首先,它将python代码转换为编译字节码的.pyc
文件,之后,它将解释编译后的字节码(.pyc
)。
如果将python代码转换为' .pyc'那么它将在编译时提出;这就是你在编译时遇到错误的原因
答案 1 :(得分:0)
这取决于你如何运行Python解释器。如果你给它一个完整的源文件,它将首先解析整个文件并在执行任何指令之前将其转换为字节码。但是如果你逐行提供它,它将解析并逐块执行代码
所以一次一行