Python 为什么在if';中没有定义main()函数__主要的&';?

Python 为什么在if';中没有定义main()函数__主要的&';?,python,main,Python,Main,您经常可以看到以下内容(变体a): 我现在想知道为什么不是这个(变体b): 或者至少是这个(变体c): 当然,main()中的函数调用可能不是函数调用,它们只是表示您可能希望在main()函数中执行的任何操作 那么为什么人们更喜欢变异a而不是其他的呢?这仅仅是风格/感觉,还是有真正的原因?如果可能,还请链接源代码。为什么要将main()函数仅限于命令行使用 通过在模块作用域中定义main()函数,现在可以包装脚本并更改其调用方式。也许您想在sys.argv中设置默认参数,也许您想在另一个脚本中重

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

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

或者至少是这个(变体c):

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

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

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


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

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

def main():
   do_something()
   do_sth_else()

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

    main()