【问题标题】:Python : SyntaxError: 'return' outside function [closed]Python:SyntaxError:'return'外部函数[关闭]
【发布时间】:2019-08-07 06:44:21
【问题描述】:

我有一个简单的 Python 代码:

import sys

def main(argv1, argv2):
    return 0 

if __name__ == '__main__':
    return main()

基本上我希望代码返回给调用者主函数返回的内容,但在执行过程中出现以下错误:

$ python ../myexamples/sample.py
  File "../myexamples/sample.py", line 11
    return main()
    ^
SyntaxError: 'return' outside function

是不是main方法不能返回任何值给操作系统?

【问题讨论】:

  • python中没有main函数。 if __name__ == '__main__': 不是函数。所以return main() 没有意义。
  • 来电者是谁?您是否尝试设置程序的退出代码?您可能希望sys.exit(1) 指示错误。 main 的默认退出是 0,所以除了让 Python 程序正常结束就可以达到与 C 中的return 0; 相同的效果。
  • Python 代码将被 Unix 脚本调用
  • @ParitoshSingh 那么我们如何才能将值返回给调用者 - 就像 C 程序一样?
  • 见我上面的评论。在 C 中,你写:int main() { return 0; }。要在 Python 中获得相同的结果,您无需编写任何内容。 Python 隐式地完成了所有这些样板文件。你能在这里准确地发布你想要完成的事情吗?等待退出代码的父脚本是什么?

标签: python


【解决方案1】:

如果目标是在程序执行结束时将退出代码返回到操作系统,则可以使用exit 函数,return 语句只能在函数内部使用,但 python 程序本身是不是函数。所以要回答你的问题,你可以做这样的事情

import sys

def main(argv1, argv2):
    return 0 

if __name__ == '__main__':
    exit_code = main()
    exit(exit_code)

【讨论】:

    【解决方案2】:

    “return”只在函数中有效,所以有效代码应该是:

    import sys
    
    def main(argv1, argv2):
        return 0 
    
    if __name__ == '__main__':
        main()
    

    如果你想得到这个函数的返回值,有效的代码应该是:

    import sys
    
    def main(argv1, argv2):
        return 0 
    
    if __name__ == '__main__':
        return_value = main()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2014-12-18
      • 1970-01-01
      相关资源
      最近更新 更多