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

eri*_*ork 6 python program-entry-point

你经常可以看到这个(变异a):

def main():
   do_something()
   do_sth_else()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我现在想知道为什么这样(变异b):

if __name__ == '__main__':
   do_something()
   do_sth_else()
Run Code Online (Sandbox Code Playgroud)

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

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

    main()
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*ers 11

为什么main()仅限命令行使用?

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