__name__是内置变量,可用于表示当前模块的名字,而“__main__”等于当前执行文件的名称。 两个名称搞不清没关系,往下看待会解释
对很多编程语言来说,程序都需要一个入口,例如C系列、Java,都需要有一个main函数作为程序的入口,而python作为脚本语言则不一样,从第一行就开始执行,并没有统一的入口。
一个python的文件有两种使用的方法,第一是直接作为脚本直接执行,第二是import到其他的python脚本中作为模块被调用执行。但是在被当作模块导入的时候总有一部分代码是不希望被运行的,而 if __name__ == '__main__' : 的作用就是控制两种情况下代码的运行。
print(__name__) print("this is song ")
if __name__=='__main__':
print("this is songsong ")
此时 if __name__=='__main__': 之前的语句被执行,之后的语句也被执行
第二种情况被导入其他文件调用
from practice import b
小提示:此处导入了第一个文件,所以会执行第一个文件的代码,不要问为什么第二个文件没代码
此时 if __name__=='__main__': 之前的语句被执行,之后的语句没有被执行
小结:文件直接运行时,if __name__=='__main__':之后的语句会被执行;当文件被当作模块导入到其他文件时,if __name__=='__main__':之后的语句不会被执行
此时回到第一行,开始解释!
上述两个文件第一个 print(__name__) 结果为__main__,第二个print(__name__)结果为practice.b
__main__无论何时都是表示当前执行文件的名字,而__name__表示当前模块的名字
如果没有引用模块直接执行文件,__name__就等于__main__;如果导入了模块,__name__就等于模块名(例如:practice.b)
新手上路,多谢指教!