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_
在这里插入图片描述

相关内容

热门资讯

国都证券股权变局:北京信托所持... 图片来源:视觉中国蓝鲸新闻6月4日讯(记者 胡劼)又一券商核心股权被冻结,引发市场关注。近日,国都证...
60亿“红包”在路上!中信证券... 本文来源:时代周报 作者:李茜楠、卢泳志图源:图虫创意6月3日晚,中信证券发布公告称,将于6月10日...
粉笔张小龙辱骂人大学子,AI大... 6月3日晚,中国人民大学哲学院的一场讲座火了。按照原计划,粉笔CEO张小龙应该来讲讲考公辅导行业。但...
美国初请失业金人数升至2月来新... 智通财经APP获悉,美国劳工部数据显示,上周美国初请失业金人数升至今年 2 月以来的最高水平,这可能...
牧原股份换帅!“95后”秦牧原... 近日,牧原股份(002714.SZ)发布公告称,秦英林辞任公司董事、董事长、战略委员会及可持续发展委...