if __name__ == '__main__': 详解
首先,__name__
是所有模块都会有的一个内置属性,一个模块的__name__
值取决于你如何调用模块。
假如你有一个test.py文件,如果在a.py文件中使用import导入这个模块import test,那么test.py模块的__name__
属性的值就是test,不带路径或者文件扩展名。
但是很多时候,模块或者说脚本会像一个标准的程序样直接运行,也就是类似python test.py这种方式,在这种情况下, __name__
的值将是一个特别缺省值"main"。
根据上面的特性,可以用if __name__ == '__main__'
来判断是否是在直接运行该py文件!
如果是,那么if代码块下的语句就会被执行,如果不是,就不执行。
该方法常用于对模块进行测试和调试,区分直接运行和被导入两种情况的不同执行方式!
通俗理解:若是直接执行这个模块,则__name__
的值就是"main",若是这个模块被其他模块导入,则__name__
的值就是模块名,不带路径或者文件扩展名