我很好奇这两种实现之间是否有任何区别:
def main():
somecode()
if __name__ == '__main__':
main()
或者:
if __name__ == '__main__':
somecode()
除了您可以从模块中导入函数main()
答案 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()