返回停止python脚本

时间:2014-05-19 19:24:25

标签: python return terminate

def foo:
    return 1
    print(varsum)

是否仍会执行打印命令,或者程序是否会在return()

处终止

4 个答案:

答案 0 :(得分:6)

  1. 不会执行print语句。
  2. 该程序不会被终止。
  3. 该函数将返回,并且执行将在堆栈的下一帧继续。在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脚本中返回,它将控制运行它的操作系统。