python __name__==“__main__“
创始人
2025-05-28 14:34:19

浅显的理解__name__

我们经常能看到程序里最后会写一段:

if __name__ == __main__:func()

简单的解释一下这个语句的意思的话就是:

当程序单独运行的时候执行func函数。

当程序单独运行的时候,__name__就是"_main_"(当这个程序被其他程序调用的时候,__name__就会变为这个程序的名字)

目录

  • 浅显的理解__name__
      • 为什么要写if __name\__== "__main\__"
    • 实例展现
      • 1.不添加if \__name__ ="\__main__"时
          • 被调用程序:
          • 调用上一个程序中func函数的程序
          • 输出结果
      • 2.添加if \__name__ ="\__main__"时
          • 被调用程序:
          • 调用func函数的程序不变
          • 输出结果
      • 3.当程序被别的程序调用的时候__name\__属性是什么样的
          • 被调用程序
          • 调用func函数的程序内容不变
          • 输出结果
      • 4.当程序单独运行时__name\__又是什么样的?
          • 输出结果

为什么要写if __name_== "__main_"

写这句语句的最终目的是:希望这个程序既能单独运行也能被其他程序调用运行

为什么这么说呢?从逻辑上,如果一个程序要单独运行,就一定需要一个输出。也就是需要在程序中使用函数。但是如果别的程序调用这个程序的话,这个程序就会输出一遍在这个程序内部使用的函数的结果,然后输出调用这个程序的程序希望的输出。这样的结果是在调用的时候不想见到的。
因此,利用__name__属性在程序单独运行和被调用时的属性值不同,进行一次判断,如果是单独运行就展现程序本身使用函数的结果;如果不是就不输出这一部分的结果。

实例展现

1.不添加if _name_ ="_main_"时

被调用程序:
def func(words):print(words)
func(this is origin py)
调用上一个程序中func函数的程序
from  __name__main_test_origin import funcfunc("this is the script that import the origin one")
输出结果

输出时就是先输出被调用程序的运行结果,然后才会输出调用了该函数的程序所需要的结果。
在这里插入图片描述

2.添加if _name_ ="_main_"时

被调用程序:
def func (words) :print (words)if __name__ == "__main__":func("this is origin py")
调用func函数的程序不变
输出结果

这样就只输出调用func函数的程序需要的结果了。
在这里插入图片描述

3.当程序被别的程序调用的时候__name__属性是什么样的

被调用程序
def func (words) :print (words)func(__name__)
调用func函数的程序内容不变
输出结果

结果第一行先输出被调用程序输出结果,也就是当程序被调用时,__name__的取值,也就是这个程序的名字。
在这里插入图片描述

4.当程序单独运行时__name__又是什么样的?

输出结果

可以看到,单独运行程序的时候它的__name__属性是_main_
在这里插入图片描述

相关内容

热门资讯

罗永浩录音还未公布,华与华兄弟... 澎湃新闻记者 戴高城12月22日,读客文化(301025.SZ)的一纸停牌公告,将华楠、华杉兄弟推上...
万亿长沙银行换帅,“70后”女... 出品|达摩财经12月19日,长沙银行(601577.SH)发布公告称,该行董事会收到董事长赵小中的辞...
54岁恒隆集团CEO卢韦柏官宣... 红星资本局12月22日消息,日前,恒隆集团(00010.HK)、恒隆地产(00101.HK)联合公告...
智谱、MiniMax冲刺港交所... 出品|达摩财经AI独角兽正加速冲向资本市场,争夺“大模型第一股”的位置。12月21日,通用人工智能(...
吉利汽车与极氪整合完成 新京报贝壳财经讯 12月22日,吉利汽车控股有限公司(0175.HK)(简称“吉利汽车”)发布公告,...