6

你经常可以看到这个(变体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而不是其他人呢?它只是风格/感觉还是有一些真正的原因?如果可能,还请链接来源。

4

2 回答 2

11

为什么将您的main()功能仅限于命令行使用?

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

于 2012-08-02T10:22:51.533 回答
4

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

于 2012-08-02T10:23:27.527 回答