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

时间:2012-08-02 10:20:13

标签: python 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()函数中可能要执行的任何操作。

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

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:4)

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