我应该用以下内容启动Python程序:
if__name__ == '__main__': some code...
如果是这样,为什么?我多次看到它,但对它没有任何线索.
如果您的程序可用作库但您还有一个主程序(例如,用于测试库),那么该构造允许其他人将该文件作为库导入而不运行您的主程序.如果您的程序名为foo.py并且您从另一个python文件执行"import foo",则__name__
求值为'foo'
,但如果从命令行运行"python foo.py",则__name__
求值为'__main__'
.
请注意,您需要在if和_之间插入一个空格,并缩进主程序:
if __name__ == '__main__': main program here
一个更好的模式是:
def main(): ... if __name__ == '__main__': main()
这允许您导入代码的人调用您的代码,同时还可以使pychecker和pylint等程序工作.
Guido Van Rossum 建议:
def main(argv=None): if argv is None: argv = sys.argv ... if __name__ == "__main__": sys.exit(main())
这样,您就可以运行main()
从别的地方(供应参数),如果你想只是一个错误代码退出return 1
的main()
,也不会误使交互式解释退出.