if __name__ == '__main__' 这段代码怎么理解???

时间:2023-12-13 16:21:14

__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__' 这段代码怎么理解???

此时   if __name__=='__main__':   之前的语句被执行,之后的语句也被执行

第二种情况被导入其他文件调用

from practice import b

if __name__ == '__main__' 这段代码怎么理解???

小提示:此处导入了第一个文件,所以会执行第一个文件的代码,不要问为什么第二个文件没代码

此时  if __name__=='__main__':   之前的语句被执行,之后的语句没有被执行

小结:文件直接运行时,if __name__=='__main__':之后的语句会被执行;当文件被当作模块导入到其他文件时,if __name__=='__main__':之后的语句不会被执行

此时回到第一行,开始解释!

上述两个文件第一个  print(__name__)  结果为__main__,第二个print(__name__)结果为practice.b

__main__无论何时都是表示当前执行文件的名字,而__name__表示当前模块的名字

如果没有引用模块直接执行文件,__name__就等于__main__;如果导入了模块,__name__就等于模块名(例如:practice.b)

新手上路,多谢指教!