其他人都已经回答了,但我想我还有其他东西要补充。
原因有if
声明,呼吁main()
(排名不分先后):
其他语言(如C和Java)有main()
功能执行程序时调用。使用这个if
,我们可以让Python像他们一样行事,这让很多人感到更加熟悉。
代码将是清洁器,更易于阅读和更好的组织。 (是的,我知道这是主观的)
这将是可能的import
python代码作为模块没有讨厌的副作用。
内def main
变量是当地,而外面是全球。这可能会引入一些错误和意外行为。
但是,你不需要写main()
功能,并把它称为if
语句中。
我自己通常开始写没有任何功能的小型一次性脚本。如果脚本变得足够大,或者如果我觉得把所有的代码放在一个函数中会使我受益,那么我会重构代码并执行它。当我编写bash
脚本时,也会发生这种情况。
即使您将代码放在主函数中,也不需要像这样写。一个整洁的变化可能是:
import sys
def main(argv):
# My code here
pass
if __name__ == "__main__":
main(sys.argv)
这意味着你可以调用其他脚本(或交互shell)将自定义参数main()
。这可能对单元测试或批处理有用。但请记住,上面的代码需要解析argv,因此可能最好使用不同的调用来传递已解析的参数。
在我写了一个面向对象的应用程序,代码是这样的:
class MyApplication(something):
# My code here
if __name__ == "__main__":
app = MyApplication()
app.run()
所以,请随时到更适合写的代码你。 :)
请参阅http://stackoverflow.com/questions/419163/what-does-if-name-main-do – gimel 2010-10-28 08:57:47
stackoverflow.com/questions/419163/what-does-if-name-main-do does不回答整个问题。 – Johnsyweb 2010-10-28 09:09:09
假定的重复没有回答:有一个main()函数(而不是仅将所有代码写入“if __name__”块)非常有用,因为它避免了意外创建可能影响其他函数的全局变量。 – slowdog 2010-10-29 17:05:40