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

相关内容

热门资讯

Kimi母公司月之暗面完成超7... 红星资本局2月18日消息,红星资本局从知情人士处获悉,AI助手Kimi的母公司月之暗面(Moonsh...
机器人“内卷”给14亿人看 出品|虎嗅科技组作者|宋思杭编辑|苗正卿头图|视觉中国“AI硬件100”呈现最具成长性的AI硬件公司...
一场面向14亿人的超级路演 时代真的变了,以前春晚看人,现在春晚看机器人。可能是之前被铺垫的太多了,春晚节目单出来之后,果不其然...
2026骏启新程丨联储证券总经... 联储证券总经理张强:很高兴参与“每日经济新闻新春特别策划——2026骏启新程”活动。联储证券作为青岛...
SpaceX及其全资子公司xA... 财联社2月17日电,最新消息显示,埃隆·马斯克旗下的SpaceX及其全资子公司xAI,正在参与五角大...