Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
已关闭6年。
Improve this question
打印命令是否仍将执行,或者程序将在return()处终止 将不执行print语句。 该程序不会终止。
该函数将返回,并且执行将在堆栈的下一帧继续。在C语言中,程序的入口是一个称为
您的示例中的
但是根据CPython反汇编程序,未应用DCE:
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
已关闭6年。
Improve this question
def foo:
return 1
print(varsum)
打印命令是否仍将执行,或者程序将在return()处终止
最佳答案
该函数将返回,并且执行将在堆栈的下一帧继续。在C语言中,程序的入口是一个称为
main
的函数。如果您从该函数中输入return
,则程序本身将终止。但是,在Python中,main
在程序代码中被显式调用,因此return
语句本身不会退出程序。您的示例中的
print
语句就是我们所说的dead code。死代码是永远无法执行的代码。 print
中的if False: print 'hi'
语句是无效代码的另一个示例。许多编程语言都提供了消除死代码的功能,即DCE,可以在编译时清除此类语句。 Python的AST compiler显然具有DCE,但不能保证所有代码对象都具有DCE。如果应用DCE,则以下两个函数将编译为相同的字节码:def f():
return 1
print 'hi'
def g():
return 1
但是根据CPython反汇编程序,未应用DCE:
>>> dis.dis(f)
2 0 LOAD_CONST 1 (1)
3 RETURN_VALUE
3 4 LOAD_CONST 2 ('hi')
7 PRINT_ITEM
8 PRINT_NEWLINE
>>> dis.dis(g)
2 0 LOAD_CONST 1 (1)
3 RETURN_VALUE
关于python - 确实返回停止python脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23745654/
10-10 16:53