Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

已关闭6年。



Improve this question



def foo:
    return 1
    print(varsum)

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

最佳答案

  • 将不执行print语句。
  • 该程序不会终止。

  • 该函数将返回,并且执行将在堆栈的下一帧继续。在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