函数 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()

最新更新