Python中的main函数和/或__name__ =="__ main__"检查有什么意义?

Ric*_*ões 15 python

可能重复:
<if __name __ =="__ main __":>做什么?

我偶尔会注意到Python脚本中的以下内容:

if __name__ == "__main__":
    # do stuff like call main()
Run Code Online (Sandbox Code Playgroud)

这有什么意义?

Ale*_*lli 22

让所有实质的Python代码都存在于一个函数内(即,不在模块顶层),这是一个关键的性能优化,也是良好的代码组织的一个重要因素(Python编译器可以优化对函数中局部变量的访问)它可以优化实际上是模块全局变量的"局部"变量,因为后者的语义要求更高.

以当前模块作为"主脚本"(而不是从另一个模块导入)来调用函数条件使得模块中包含的功能块的潜在可重用性(因为其他模块可以导入它并且只需调用适当的功能或类),更重要的是它支持固体单元测试(在执行和测试模块的功能之前,通常需要设置外部子系统的所有类型的模型和假货).


Jes*_*ogt 8

这允许导入python脚本或独立运行是一种理智的方式.

如果直接运行python文件,则该__name__变量将包含__main__.如果导入的脚本不是这种情况.通常,如果您导入要从文件中调用函数或引用类的脚本.

如果您没有进行此检查,则导入时将运行不在类或函数中的任何代码.


Fra*_*rth 7

假设它的唯一目的main.py是,其他文件可以import main包含"主"程序中的类和函数,但不运行源代码.

如果没有此条件,则在由其他脚本导入时,将执行全局范围中的代码.