0
点赞
收藏
分享

微信扫一扫

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

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)。
举报

相关推荐

0 条评论