Python if __name__ == "__main__" 的含义
一、概念
我们在Python中经常可以看到一个程序会有if __name__ == "__main__",同时这通常是写在程序的入口位置,那么他有什么特殊含义呢?在了解这个之前,我们需要知道的是:
1. python中一切皆对象,模块,类等都是对象,是对象就一定有属性;
2. python文件有两种执行方式,一则import 模块调用,二则直接执行;
3. 每个对象都有__name__属性,__name__,如果是放在Modules模块中,就表示是模块的名字;如果是放在Classs类中,就表示类的名字;
4. import模块时,__name__ 的值通常为模块文件名;当直接执行py时候不被模块调用时,则__name__就等于"__main__"
二、总结
当我们知道了以上的知识点,便很好理解了,比如我们使用Python来完成一个项目时,通常都会将其分为不同模块去实现,举例来说需要实现购物商城时会有用户登陆入口,购物车,支付等几个功能,它们分别实现在不同的.py文件中(login.py、shopping_cart.py、pay.py、index.py),其中index.py约定为程序的主入口,在除了此文件中,除了index.py,其他的文件__name__的值都和其文件名称相等,这和上述所说的第四点相同。所以在if __name__ == "__main__"这个条件成立的时候,只能是index.py当做程序的主入口。一个程序只有一个主入口文件,如果执行主程序文件,Python会在其文件内部自动创建一个变量,变量名称叫做__name__,他的值自然就等于__main__,当然如上所述所说,生成这个变量的前提是执行主入口文件。