我偶尔会注意到Python脚本中的以下内容:
if __name__ == "__main__":
# do stuff like call main()
Run Code Online (Sandbox Code Playgroud)
这有什么意义?
Ale*_*lli 22
让所有实质的Python代码都存在于一个函数内(即,不在模块顶层),这是一个关键的性能优化,也是良好的代码组织的一个重要因素(Python编译器可以优化对函数中局部变量的访问)它可以优化实际上是模块全局变量的"局部"变量,因为后者的语义要求更高.
以当前模块作为"主脚本"(而不是从另一个模块导入)来调用函数条件使得模块中包含的功能块的潜在可重用性(因为其他模块可以导入它并且只需调用适当的功能或类),更重要的是它支持固体单元测试(在执行和测试模块的功能之前,通常需要设置外部子系统的所有类型的模型和假货).
这允许导入python脚本或独立运行是一种理智的方式.
如果直接运行python文件,则该__name__变量将包含__main__.如果导入的脚本不是这种情况.通常,如果您导入要从文件中调用函数或引用类的脚本.
如果您没有进行此检查,则导入时将运行不在类或函数中的任何代码.
假设它的唯一目的main.py是,其他文件可以import main包含"主"程序中的类和函数,但不运行源代码.
如果没有此条件,则在由其他脚本导入时,将执行全局范围中的代码.
| 归档时间: |
|
| 查看次数: |
4278 次 |
| 最近记录: |