发布时间:2023-03-27 08:00
大家经常在 python 的脚本文件中,会遇到这样的代码:if __name__ == \"__main__\":
,那么有没有人知道这到底是干嘛的。今天就分享一下这个到底是干嘛的。
创建一个文件夹code0516
。然后在这个文件夹下创建一个名叫one.py
文件,并且写入下面的代码:
# file one.py
def func(): # Line 1.1
print(\"func() in ONE.py\")
print(\"top-level in ONE.py\") # line 1.2
if __name__ == \"__main__\":
print(\"ONE.py is being run directly\") # line 1.3
else:
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
部分都运行了,别的都没运行。
python one.py
命令运行one.py
文件,叫直接运行。(感觉说了就像是没说一样)。__name__
其实是 python 的内置的一个变量。__name__
就成了__main__
。接下来在文件夹code0516
下,创建另外一个叫two.py
文件。并且写入下面的代码:
# file two.py
import one
print(\"top-level in TWO.py\") # line 2.1
one.func() # line 2.2
if __name__ == \"__main__\":
print(\"TWO.py is being run directly\") # line 2.3
else:
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
文件运行的结果逐行分析一下,但是我们这里有下面几个要求要注意:
import one
这就是代表 导入运行
(就是导入这个文件,反正不是直接运行了)。import one
这样的形式的),__name__
就成了脚本本身的名字了
,这里的脚本名字为one
,因此这里的__name__
也就变成了one
。two.py
直接运行分析运行结果 | 结果来源于哪一行 | 为什么会运行这一行 (two.py ) |
---|---|---|
top-level in ONE.py |
# line 1.2 |
import one |
ONE.py __name__ is one |
# line 1.4 |
import one |
ONE.py is being imported into another module |
# line 1.5 |
import one |
top-level in TWO.py |
# line 2.1 |
print(\"top-level in TWO.py\") |
func() in ONE.py |
# Line 1.1 |
one.func() |
TWO.py is being run directly |
# line 2.3 |
print(\"TWO.py is being run directly\") |
python one.py
命令运行one.py
文件,叫直接运行。(感觉说了就像是没说一样)。__name__
其实是 python 的内置的一个变量。__name__
就成了__main__
。import one
这样的形式的),__name__
就成了脚本本身的名字了
,这里的脚本名字为one
,因此这里的__name__
也就变成了one
。list
照片浏览器_照相馆拍的证件照还过不了!照片上传到底怎样才能过?
中国企业出海墨西哥红利客观,ADVANCE.AI为其保驾护航
技术解析|Doris Connector 结合 Flink CDC 实现 MySQL 分库分表 Exactly Once精准接入
在Tomcat中部署web项目出现http状态-404 -未找到详细解决方案
【20210914】【机器/深度学习】模型评价指标:精确率、召回率、特异性、敏感性、F1-score、ROC曲线、AUC
SpringBoot--@Async注解使用 及线程池简单配置
entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit
vue3中update:modelValue的使用与不生效问题解决
python windows linux github 开发_深入体验bash on windows!在windows上搭建原生的linux开发环境...