我已经读过python是一种脚本语言,它的执行引擎包含一个解释器,它逐个执行每行代码。
我有一个简单的python代码as-
print("1")
print("2")
print("3")
print("4)
这里第4行打印(“4”包含错误(缺少结束引号)。当我运行此程序时,只是在第4行中出现错误,告诉我语法错误。
我的问题是由于python被解释而不是编译,因此输出不应该是
1
2
3
Syntax error in line 4
但它直接给我一个错误信息,没有任何输出第1,2和3行就像任何其他编译语言,如Java,C和C ++左边我是python的新手,请解释。
答案 0 :(得分:3)
认识到Python代码首先被编译成称为字节代码的中间形式非常重要。然后由Python解释器执行该字节代码。它类似于Java的编译/执行周期,如果您熟悉它,尽管Python可以立即执行编译的代码。字节代码与可以由硬件直接执行的机器代码不同,它是更高级别的。
在Python中,编译单元是模块,它通常对应于整个文件,而不是单个语句。
因此,您的示例中的第4行将与前面的行一起编译,第4行中的语法错误会阻止执行开始。
通过反汇编函数,您可以了解字节代码的含义:
import dis
def f():
print("1")
print("2")
print("3")
dis.dis(f)
输出
2 0 LOAD_CONST 1 ('1') 3 PRINT_ITEM 4 PRINT_NEWLINE 3 5 LOAD_CONST 2 ('2') 8 PRINT_ITEM 9 PRINT_NEWLINE 4 10 LOAD_CONST 3 ('3') 13 PRINT_ITEM 14 PRINT_NEWLINE 15 LOAD_CONST 0 (None) 18 RETURN_VALUE