我很好奇这两种实现之间是否有任何区别:
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()