函数 main() 的用法?

Usage of the function main()?

我很好奇这两种实现有什么区别:

def main():
    somecode()

if __name__ == '__main__':
    main()

或者:

if __name__ == '__main__':
    somecode()

除了你可以从模块

导入函数main()

我能想到的唯一实际区别是适用于我今天早些时候给出的答案的东西

在它自己的函数 main() 中定义主要逻辑,而不是直接在 if __name__ == '__main__' 块中定义,这样更容易处理程序应该提前结束的情况:

def main():
    ...
    if not continue_program:
        return

    ...
    if not continue_program:
        return

    ...

if __name__ == '__main__':
    main()

要直接从 if 块中获得相同的行为,我需要嵌套几个条件体(或使用像 sys.exit() 这样丑陋的东西)。

如果您的代码与给定的完全一样,那么直接调用 somecode() 对我来说看起来更清晰:

if __name__ == '__main__':
    somecode()

这是因为在 Python 中,main 只是另一个函数,而不是像 C/Java 中那样的特殊函数。

但是,如果你的主函数调用了多个函数,那么

def main():
    somecode1()
    somecode2()    
    somecode3()

if __name__ == '__main__':
    main()

比下面的替代方案更简洁,原因是现在不同函数的交互使代码模块化,包装函数现在可以导入其他地方。

if __name__ == '__main__':
    somecode1()
    somecode2()    
    somecode3()

请注意,

def main():
    somecode1()
    somecode2()    
    somecode3()

if __name__ == '__main__':
    main()

等同于,这里 main 只是函数的另一个名称

def somecode():
    somecode1()
    somecode2()    
    somecode3()

if __name__ == '__main__':
    somecode()