我正在使用/重写一段代码,该代码首先定义一个函数,如下所示:
def main(argv=[__name__]):
...
*rest of code*
...
并以以下内容结尾:
if __name__ == "__main__":
sys.exit(main(sys.argv))
我的印象是,它所做的是检查以确保脚本是从命令行执行的,然后使用退出时提供的参数运行函数 main
Python。那么,为什么需要在函数定义中将变量argv
预设为[__name__]
呢?这不是我的代码,所以我不知道这背后的初衷。然而,我不熟悉使用 if __name__ == "__main__":
行来抽查命令行执行,所以也许我缺少这种语法的一些明显的原因。任何帮助或有关 main
函数定义和参数/命令行与模块测试的进一步详细信息将不胜感激。
最佳答案
至于argv=[__name__]
,原始开发人员可能希望保留不从命令行运行此函数的选项(即由另一个模块调用),并提供 __name__
因为它使用 sys.argv[0]
来实现某些功能。
main
函数与 python 无关,只是一些约定(源自 C
等语言)。 sys.exit(main(sys.argv))
将触发 sys.exit
函数,其退出代码相当于运行 main
的结果> 带有接收到的命令行参数的函数。 main
可能应该返回适当的退出代码(0
表示 OK,其他表示各种异常)。
关于python - 为什么 def main(argv=[__name__]) 和 if __name__ == "__main__": sys. exit(main(sys.argv)) ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473945/