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

相关内容

热门资讯

科创板创新药企BD授权交易总额... 2026年半年度财报季已收官,在创新药企业以业绩扭亏和BD兑现吸引市场目光的同时,以CXO为代表的上...
本周末10余家公司披露回购增持... 9月13日晚间,三一重工、天安新材、永茂泰等多家主板公司同步披露股份回购进展,以真金白银的行动践行对...
李想发文:i9是满分答卷,理想... 9月10日,理想汽车CEO李想通过个人微博发文宣布,理想i9将于9月16日正式发布。李想表示,理想i...
胡塞速通红海西岸,伊朗手握两大... 谁也没想到,胡塞武装突然发威,从9月3号南下发起总攻,打得沙特支持的也门政府军节节败退,尤其是9月1...
周末10余家沪市主板公司披露回... 中经记者 孙汝祥 夏欣 北京报道9月13日晚间,三一重工、天安新材、永茂泰等多家主板公司同步披露股份...