确实返回停止python脚本

Han*_*ans 5 python return terminate

def foo:
    return 1
    print(varsum)
Run Code Online (Sandbox Code Playgroud)

打印命令是否仍将执行,或者程序将在return()处终止

koj*_*iro 9

  1. 打印语句将不会执行。
  2. 该程序不会终止。

该函数将返回,并且执行将在堆栈的下一帧继续。在C语言中,程序的入口是一个称为的函数main。如果您return使用该功能,程序本身将终止。但是,在Python中,main是在程序代码中显式调用的,因此return语句本身不会退出程序。

print您的示例中的语句就是所谓的无效代码。无效代码是永远无法执行的代码。中的print语句if False: print 'hi'是无效代码的另一个示例。许多编程语言都提供了消除死代码或DCE的功能,它们可以在编译时删除此类语句。Python的AST编译器显然具有DCE ,但不能保证所有代码对象都可以。如果应用DCE,则以下两个函数将编译为相同的字节码:

def f():
    return 1
    print 'hi'
def g():
    return 1
Run Code Online (Sandbox Code Playgroud)

但是根据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        
Run Code Online (Sandbox Code Playgroud)