if __name__ == '__main__' 如何正确理解?

__name__属性是Python的一个内置属性,记录了模块的名字。

模块就是一个独立的Python文件,例如 a.py、b.py...等等,就可以称为“模块a”、“模块b”。而在程序内部,模块名字是存放在__name__变量中的。

不同于Java中的Class名字,Class.getName()返回的是固定的值,而Python模块的__name__变量则在不同的执行条件下,其值是不同的。下面的例子摘自知乎,说的很有意思,大家可以学习一下:

小明.py

在朋友眼中,你是小明(__name__ == '小明')

而在你自己眼中,你是你自己(__name__ == '__main__')

你编程很好,朋友调你去帮他写程序(import 小明,这时你在朋友眼中,__name__ == '小明')

但你晚上也会打开xx网站,做一些自己的事情(直接运行小明.py,__name__ == '__main__')