java中的接口是类吗
241
2022-09-03
if __name__ == '__main__': 是什么东西
今天写代码又遇到了这个东西,已经不是第一次了。我下别人的代码经常看到这玩意儿,但是我自己写的时候从来没写过,我学python的时候教程也没写过这玩意儿(我看的是python三剑客第一本入门的python)。
所以今天就特意查了一下这是个什么玩意儿。
原来是这样的,就是if __name__ == '__main__':包裹的内容只能在当前python文件中运行,当该文件import到其他文件时,if __name__ == '__main__':中的代码就不会被运行。
写个demo1:
print("我是demo1")print(__name__)if __name__ == '__main__': print("我是demo1-mian后边的东西") print(__name__)
运行之后是这个样子的:
再搞个demo2:
import demo1print(__name__)
运行之后是这样的:
我们看到demo2确实没有输出demo1if __name__ == '__main__':之后的内容。
并且分析一下输出:
demo1中的两个print(__name__)输出的都是__main__demo2中的print(__name__)输出的也是__main__,但是import过来的print(__name__)(就是demo1if __name__ == '__main__':之前的那个)输出的是demo1
__name__
由此我们可以知道:
在本文件中__name__就是__main__当文件被import到其他文件中时,被import的文件中的__name__就会显示所在文件名。
换个更专业的说法:
__name__是一个变量,前后加了双下划线是因为这是系统定义的名字(python中系统变量都是双下划线开头结尾,普通变量不使用这种命名方式)__name__是用来标识模块名字的一个系统变量。这里分两种情况:第一种情况指的是当前运行的模块,那么当前模块__name__的值就为"__main__";第二种情况指的是该模块是使用import导入的模块,那么这个被导入模块的__name__变量的值为该模块的文件名(去掉.py)。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~