当前位置 : 主页 > 编程语言 > python >

if __name__ == '__main__': 是什么东西

来源:互联网 收集:自由互联 发布时间:2022-06-15
今天写代码又遇到了这个东西,已经不是第一次了。我下别人的代码经常看到这玩意儿,但是我自己写的时候从来没写过,我学python的时候教程也没写过这玩意儿(我看的是python三剑客

if __name__ ==

今天写代码又遇到了这个东西,已经不是第一次了。我下别人的代码经常看到这玩意儿,但是我自己写的时候从来没写过,我学python的时候教程也没写过这玩意儿(我看的是python三剑客第一本入门的python)。

所以今天就特意查了一下这是个什么玩意儿。

原来是这样的,就是​​if __name__ == '__main__':​​包裹的内容只能在当前python文件中运行,当该文件import到其他文件时,​​if __name__ == '__main__':​​中的代码就不会被运行。

写个demo1:

if __name__ ==

print("我是demo1")
print(__name__)

if __name__ == '__main__':
print("我是demo1-mian后边的东西")
print(__name__)

运行之后是这个样子的:

if __name__ ==

再搞个demo2:

if __name__ ==

import demo1
print(__name__)

运行之后是这样的:

if __name__ ==

我们看到demo2确实没有输出demo1​​if __name__ == '__main__':​​之后的内容。

并且分析一下输出:

  • demo1中的两个​​print(__name__)​​​输出的都是​​__main__​​
  • demo2中的​​print(__name__)​​​输出的也是​​__main__​​​,但是import过来的​​print(__name__)​​​(就是demo1​​if __name__ == '__main__':​​之前的那个)输出的是demo1

__name__

由此我们可以知道:

  • 在本文件中​​__name__​​​就是​​__main__​​
  • 当文件被import到其他文件中时,被import的文件中的​​__name__​​就会显示所在文件名。

换个更专业的说法:

  • ​​__name__​​是一个变量,前后加了双下划线是因为这是系统定义的名字(python中系统变量都是双下划线开头结尾,普通变量不使用这种命名方式)
  • ​​__name__​​是用来标识模块名字的一个系统变量。这里分两种情况:
  • 第一种情况指的是当前运行的模块,那么当前模块__name__的值就为"__main__";
  • 第二种情况指的是该模块是使用import导入的模块,那么这个被导入模块的__name__变量的值为该模块的文件名(去掉.py)。
【文章原创作者:武汉网站优化公司 http://www.5h5q.com/wzyh/ 复制请保留原URL】
上一篇:进程、线程和协程有什么区别
下一篇:没有了
网友评论