2024-04-26 05:47:09 发布
网友
Possible Duplicate:What does <if __name__==”__main__”:> do?
我偶尔会在Python脚本中注意到如下内容:
if __name__ == "__main__": # do stuff like call main()
这有什么意义?在
将所有重要的Python代码都放在一个函数中(例如。,不是在模块顶层)是一个关键的性能优化,也是良好代码组织的一个重要因素(Python编译器可以优化对函数中局部变量的访问,而不是优化实际上是模块全局变量的“局部”变量,因为后者的语义要求更高)。在
在当前模块作为“主脚本”(而不是从另一个模块导入)运行的情况下,对函数的调用会使模块中包含的功能块具有潜在的可重用性(因为其他模块可能会导入它,而只调用适当的函数或类),更重要的是,它支持可靠的单元测试(在这种情况下,外部子系统的所有类型的实体模型和仿冒品通常需要在模块的功能被测试之前设置好)。在
假设它在main.py中,这样其他文件就可以import main包含“main”程序中的类和函数,但不运行源代码。在
main.py
import main
如果没有这个条件,全局范围内的代码将在其他脚本导入时执行。在
这使得python脚本可以被导入或独立运行是一种明智的方式。在
如果直接运行python文件,__name__变量将包含__main__。如果导入脚本,情况就不一样了。通常,如果导入要从文件调用函数或引用类的脚本。在
__name__
__main__
如果没有进行此检查,则在导入时,类或函数中不存在的任何代码都将运行。在
将所有重要的Python代码都放在一个函数中(例如。,不是在模块顶层)是一个关键的性能优化,也是良好代码组织的一个重要因素(Python编译器可以优化对函数中局部变量的访问,而不是优化实际上是模块全局变量的“局部”变量,因为后者的语义要求更高)。在
在当前模块作为“主脚本”(而不是从另一个模块导入)运行的情况下,对函数的调用会使模块中包含的功能块具有潜在的可重用性(因为其他模块可能会导入它,而只调用适当的函数或类),更重要的是,它支持可靠的单元测试(在这种情况下,外部子系统的所有类型的实体模型和仿冒品通常需要在模块的功能被测试之前设置好)。在
假设它在
main.py
中,这样其他文件就可以import main
包含“main”程序中的类和函数,但不运行源代码。在如果没有这个条件,全局范围内的代码将在其他脚本导入时执行。在
这使得python脚本可以被导入或独立运行是一种明智的方式。在
如果直接运行python文件,
__name__
变量将包含__main__
。如果导入脚本,情况就不一样了。通常,如果导入要从文件调用函数或引用类的脚本。在如果没有进行此检查,则在导入时,类或函数中不存在的任何代码都将运行。在
相关问题 更多 >
编程相关推荐