18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 建站知识 > python “__name__”到底是什么东西!

python “__name__”到底是什么东西!

时间:2023-02-20 02:12:02 | 来源:建站知识

时间:2023-02-20 02:12:02 来源:建站知识

python “__name__”到底是什么东西!:

背景

大家经常在 python 的脚本文件中,会遇到这样的代码:if __name__ == "__main__":,那么有没有人知道这到底是干嘛的。今天就分享一下这个到底是干嘛的。

1. 直接运行

创建一个文件夹code0516。然后在这个文件夹下创建一个名叫one.py文件,并且写入下面的代码:

# file one.pydef func(): # Line 1.1 print("func() in ONE.py")print("top-level in ONE.py") # line 1.2if __name__ == "__main__": print("ONE.py is being run directly") # line 1.3else: print(f"ONE.py __name__ is {__name__}") # line 1.4 print("ONE.py is being imported into another module") # line 1.5然后运行:python one.py,运行结果如下:

观察上面的结果可以发现,代码中的 # line 1.2# line 1.3部分都运行了,别的都没运行。

为什么?这里给到一个解释:

  1. 要知道,我们使用python one.py命令运行one.py文件,叫直接运行。(感觉说了就像是没说一样)。
  2. __name__其实是 python 的内置的一个变量。
  3. 当直接运行脚本的时候,__name__就成了__main__
  4. 为什么会这样设置?那就是这样设置的,没有为什么。

2. 导入运行

接下来在文件夹code0516下,创建另外一个叫two.py文件。并且写入下面的代码:

# file two.pyimport oneprint("top-level in TWO.py") # line 2.1one.func() # line 2.2if __name__ == "__main__": print("TWO.py is being run directly") # line 2.3else: print("TWO.py is being imported into another module") # line 2.4然后运行:python two.py,运行结果如下:

观察上面的运行结果可以发现:# line 1.2# line 1.4# line 1.5# line 2.1# line 1.1# line 2.2# line 2.3部分都运行了,别的都没运行。

我们来对two.py文件运行的结果逐行分析一下,但是我们这里有下面几个要求要注意:

  1. import one这就是代表 导入运行(就是导入这个文件,反正不是直接运行了)。
  2. 当脚本被导入的时候(像是import one这样的形式的),__name__就成了脚本本身的名字了,这里的脚本名字为one,因此这里的__name__也就变成了one

two.py直接运行分析

运行结果结果来源于哪一行为什么会运行这一行 (two.py)
top-level in ONE.py# line 1.2import one
ONE.py __name__ is one# line 1.4import one
ONE.py is being imported into another module# line 1.5import one
top-level in TWO.py# line 2.1print("top-level in TWO.py")
func() in ONE.py# Line 1.1one.func()
TWO.py is being run directly# line 2.3print("TWO.py is being run directly")

总结

  1. 使用python one.py命令运行one.py文件,叫直接运行。(感觉说了就像是没说一样)。
  2. __name__其实是 python 的内置的一个变量。
  3. 当直接运行脚本的时候,__name__就成了__main__
  4. 当脚本被导入的时候(像是import one这样的形式的),__name__就成了脚本本身的名字了,这里的脚本名字为one,因此这里的__name__也就变成了one

参考链接:

  1. https://zhuanlan.zhihu.com/p/57309137
  2. https://stackoverflow.com/questions/419163/what-does-if-name-main-do

阅读更多

list

关键词:

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭