为什么 main() 函数没有在 if '__main__' 中定义?



您经常可以看到(变体a):

def main():
   do_something()
   do_sth_else()
if __name__ == '__main__':
    main()

我现在想知道为什么这个(变体b):

if __name__ == '__main__':
   do_something()
   do_sth_else()

或者至少这个(变化c):

if __name__ == '__main__':
    def main():
        do_something()
        do_sth_else()
    main()

当然,main()内部的函数调用可能不是函数调用,它们只是表示您可能想要在main()函数中执行的任何操作。

那么,为什么人们更喜欢变体a而不是其他变体呢?这只是风格/感觉,还是有一些真正的原因?如果可能,也请链接来源。

为什么要将main()函数限制为仅使用命令行?

通过在模块范围内定义main()函数,您现在可以包装脚本并更改其调用方式。也许您想在sys.argv中设置默认参数,也许您想重用另一个脚本中的代码。

这是因为有两种方法可以使用Python脚本。一个来自命令行,另一个来自从另一个脚本导入时。当您从命令行运行它时,您希望运行main()函数,而当您导入它时,可能不想运行main()函数,直到您需要它(您只想导入main())。

相关内容

  • 没有找到相关文章

最新更新