def foo:
return 1
print(varsum)
是否仍会执行打印命令,或者程序是否会在return()
处终止答案 0 :(得分:6)
该函数将返回,并且执行将在堆栈的下一帧继续。在C中,程序的入口点是一个名为main
的函数。如果您从该函数return
,程序本身终止。但是,在Python中,main
在程序代码中显式调用,因此return
语句本身不会退出程序。
您示例中的print
语句就是我们所说的dead code。死代码是无法执行的代码。 print
中的if False: print 'hi'
语句是死代码的另一个示例。许多编程语言提供了死代码消除或DCE,它们在编译时删除了这些语句。 Python显然有AST compiler的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
答案 1 :(得分:2)
实际上,return语句将结束你的功能。所以你的印刷品不会被执行。
Here a similar question about it, and lot of interesting answers
答案 2 :(得分:0)
都不是。会发生什么,函数会返回。 print
将不会被执行。根据调用asdf()
的代码,脚本可能会终止也可能不会终止。
答案 3 :(得分:0)
return语句将结束当前写入的范围。因此,如果从函数返回,它将返回到调用该函数的位置。如果你在主python脚本中返回,它将控制运行它的操作系统。