为什么main()函数不能定义在if '__main__'内部?

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而不是其他变量?这只是风格/感觉问题还是有一些真正的原因?如果可能的话,请同时提供参考来源。
2个回答

11

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

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接