使用函数main()?

时间:2017-01-27 13:53:43

标签: python coding-style main

我很好奇这两种实现之间是否有任何区别:

def main():
    somecode()

if __name__ == '__main__':
    main()

或者:

if __name__ == '__main__':
    somecode()

除了您可以从模块中导入函数main()

2 个答案:

答案 0 :(得分:2)

我能想到的唯一实际差异是适用于我今天早些时候给出的答案here

在其自己的函数main()中而不是直接在if __name__ == '__main__'块中定义主逻辑,可以更轻松地处理程序过早结束的情况:

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

    ...
    if not continue_program:
        return

    ...

if __name__ == '__main__':
    main()

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

答案 1 :(得分:2)

如果您的代码与给定的完全相同,那么直接调用somecode()对我来说看起来更干净:

if __name__ == '__main__':
    somecode()

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

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

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