What's the point of a main function and/or __name__ == “__main__” check in Python?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What doesdo?
在python脚本中,我偶尔会注意到如下情况:
1 2 | if __name__ =="__main__": # do stuff like call main() |
这有什么意义?
让所有大量的python代码活在一个函数中(即不在模块顶层)是一个关键的性能优化,也是良好代码组织的一个重要因素(python编译器可以优化对函数中局部变量的访问,而不是优化实际上是模块全局变量的"局部"变量)。因为后者的语义要求更高)。
对函数的调用以当前作为"主脚本"运行的模块为条件(而不是从另一个模块导入),这可能会导致模块中包含的功能块的潜在可重用性(因为其他模块可能会导入它并只调用适当的函数或类),更重要的是,它支持可靠的单元测试(在模块功能执行和测试之前,通常需要设置外部子系统的所有实物模型和假模型)。
这允许单独导入或运行python脚本是一种明智的方法。
如果直接运行python文件,那么
如果没有进行此检查,则导入时将运行不在类或函数中的任何代码。
假设它在
如果没有此条件,则当由其他脚本导入时,将执行全局范围内的代码。
这是一个进行模块测试的好地方。这只在直接从shell运行模块时运行,但如果导入,则不会运行。