我经常编写仅作为主程序运行的命令行实用程序。例如,我可能有一个如下所示的文件:
#!/usr/bin/env python
if __name__ == '__main__':
import sys
# do stuff
换句话说,没有任何事情发生在 if 语句下,检查这个文件是否作为主文件运行。我尝试导入这样的文件,看看会发生什么,导入成功。
因此,正如我所料,允许像这样导入文件,但围绕这种做法的惯例是什么?是否应该抛出一个错误告诉用户没有任何东西可以导入?或者如果文件的所有内容都应该作为 main 运行,是否需要检查程序是否作为 main 运行?还是不需要条件?
此外,如果我有 import 语句,它们应该放在文件的顶部,还是在条件下?如果模块仅在条件下使用,在我看来,它们应该在条件下而不是在文件顶部导入。
最佳答案
如果你正在编写简单的实用程序,你完全确定你永远不会在另一个程序中作为模块导入,那么你真的不需要包含 if __name__ == '__main__'
东西.该构造的基本点是允许开发一个模块,既可以作为模块导入使用,也可以作为独立程序运行用于其他目的。例如,如果您有一个模块并且有一些您希望定期在其上运行的测试向量,您可以将测试向量的触发机制放在 if __name__
block 中。
另一个例子可能是,如果您有一个自己开发的独立程序,它也可以为其他人提供有用的功能。如果您查看 pip 模块,就会发现这是该技术的一个很好的例子。
关于python - 导入Python主程序的约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37015756/