在写Python代码中,常常会需要导入其他的库,这里的库或者说模块其实指的都是其他的.py文件,只是这些被导入文件是在导入到的文件里面执行。
对于一些大型的项目,或者是有些人习惯于面向对象分模块地写代码的时候,就需要写多个程序文件,然后将其中的部分文件导入到执行文件中执行。
这时候就会有个问题:如果我们不希望被导入的.py文件中的部分代码被执行,且这部分代码又不在该程序的成员方法里面(独立于方法的代码块),那我们就需要通过__name__来隐藏这部分代码,并使它们不被执行。
具体的写法很简单,为:
if__name__=="__main__":xxx
当.py被Python解释器执行时(脚本),__name__这个变量的值就是"__main__",如果这个.py是被import到别的文件中执行的话(库),此时的__name__的值就为该导入的库包的文件名,那当然不等于"__main__",那这个条件判断语句下的代码块就不被执行。
通过这个特点,我们就能知道:当__name__值为"__main__"的即为脚本,反之,即为导入的模块或者库(方法)。
举例:有A.py和B.py两个文件,两个文件都有"if__name__==……"这样的结构,此时将A.py导入B.py,执行B.py,在A.py中的__name__的值就为"A",此时A.py中相应的代码块就不被执行,而B.py中的"if__name__==……"结构下的代码被正常执行。
当然了,这是个习惯问题,也可以选择不写,不过写了能避免很多难以发现的坑,而且加了"if__name__==……"这个结构,也相当于标志了执行文件的入口。
希望以上内容对你有帮助!