exit(main())是什么意思?
最近我在阅读一些Python脚本时,看到过这个情况。我查了一下文档,里面只给了一些关于传递结束值或某种字符串的例子。
我觉得这个做法是调用主方法,然后退出?
如果有人能帮我解释一下,我会很感激。
if __name__ == "__main__":
exit (main())
谢谢你!
5 个回答
4
因为如果main()里面有一个调用sys.exit()的指令,它会让解释器直接退出。
这样做的原因是为了把main()的返回值当作脚本的返回代码。
21
如果你直接运行一个Python脚本,__name__
会被设置为"__main__"
,但如果你从另一个脚本中import
这个脚本,它就不会这样设置。
所以在这种情况下,脚本会检查你是否是直接运行它。如果是,它会调用main()
函数来执行一些工作,并通过exit()
把main()
函数的返回值传给系统。如果这个脚本是从其他模块导入的,它就不会执行main()
函数,而是简单地把脚本中的函数和类提供给导入它的脚本。
这是Python中一个常见的写法。它让你可以有独立运行的脚本,同时也能被import
,而不会执行那些导入脚本不想执行的工作。
53
这段话的意思是,程序会先调用一个叫做 main()
的函数,当这个函数执行完毕后,程序会退出,并把 main()
的结果作为返回码告诉系统。
下面是一个简单的例子,说明这种情况可能会用到:
def main():
try:
doSomething()
return 0
except:
return 1
if __name__ == "__main__":
exit (main())
如果在 main()
函数里没有明确给出返回值,默认会返回 None
。这和你明确写 return 0
是一样的,系统会返回相同的返回码。如果 main
返回的值不是整数或者 None
,那么系统会返回码 1。