Python program start
我应该用以下命令启动python程序吗?
1 2 | if__name__ == '__main__': some code... |
如果是,为什么?我看过很多次,但一点都不知道。
如果您的程序可用作库,但您也有一个主程序(例如,测试库),那么这个构造允许其他人将文件作为库导入,而不是运行主程序。如果您的程序名为foo.py,并且从另一个python文件执行"导入foo",那么
请注意,您确实需要在if和之间插入一个空格,并缩进主程序:
1 2 | if __name__ == '__main__': main program here |
更好的模式是:
1 2 3 4 5 | def main(): ... if __name__ == '__main__': main() |
这允许导入代码的人调用您的代码,同时也可以使程序,如a href="http://pychecker.sourceforge.net/"rel="noreferrer">pychecker/a a和a href="http://www.logilab.org/projects/pylint"rel="noreferrer">pylint/a a工作。
Guido van Rossum建议:
1 2 3 4 5 6 7 | def main(argv=None): if argv is None: argv = sys.argv ... if __name__ =="__main__": sys.exit(main()) |
通过这种方式,您可以从其他地方运行
这是很好的做法。首先,它清楚地标记了您的模块入口点(假设您在顶层没有任何其他可执行代码——yuck)。第二,它使您的模块可以由其他模块导入而不执行,这是一些工具(如代码检查程序、包装程序等)需要做的。