一个不该犯的错误!
对于if __name__ ==’__main__‘:一些不成熟的小理解……
一直把这个用法看作程序运行入口,没太关注,给同事讲授过程中发现理解的还不够所以查了相关资料,写一下自己的理解吧。
python不像C/C++、java等需要有一个主函数(main)作为程序入口。它是动态逐行解释运行的,就是说程序可以从第一行开始解释运行,不必非要统一的入口,那if __name__ ==’__main__‘用在这是什么意义呢?个人理解如下。
首先,从语法看,这是 if 判断,判断变量 __name__ 是否等于一个值,来决定是否执行if后面的语句。
再看,变量__name__,__name__ 是内置变量,通过dir(builtins)看到。 作用是什么呢, __name__ 用来表示模块的名称。一个python文件就可看做一个模块。
在单个文件中, if __name__ ==’__main__‘ 直接就可以看做是执行一个普通的语句就可以了,而单个文件,当前模块就是主模块,__name__ 属性就是 __main__ ,所以总是会执行if为真的子句。
在多个文件中,如果模块是被import的,则模块名称为文件名,比如文件名为area.py,import area 后该模块的 __name__ 值为area,所以area.py中if __name__ ==’__main__‘判断就是假。
综上 if __name__ ==’__main__‘:表达的意思就很清晰,判断模块的名字是否是 __main__ 为真就执行判断为真的语句,当然后面还可以接else处理其他情况
给同事造成困惑非常抱歉。
个人浅见,欢迎指正。