if __name__ == ‘__main__‘到底是在干什么

        用Python做过大型程序开发的码农都知道,在主程序中,程序运行的条件是  __name__ = '__main__',那么这行语句到底在干什么?检查谁和谁相等?

        我们知道Python有很多内置函数和内置变量,__name__我们先前没有声明过,不难猜测它我就是内置变量中的一个。我们运行下面程序来检查一下。​

print(dir())

        运行结果如下,我们可以看到,__name__的确是python的内置变量之一。

        那么我们来看一下,__name__这个变量里面到底储存着什么

print(__name__)

        运行后发现,__name__所储存的值就是__main__,但是,如果__name__默认是__main__,我们对它也没有做修改,那么__name__始终是__main__,这个if判断语句不就没有任何意义了吗?可显然不是这样的。 

        我们首先新建一个文件,命名为main.py,写下下面这个函数并调用。

def test():
    print(__name__)
test()

        不出意外,运行结果如下

        现在,我们在在同一文件夹下,新建文件夹,命名为try.py,仅仅将main当做模块导入,但不调用任何函数

import main

        神奇的事情发生了,我们并没有调用test函数,但是test函数以及运行了。区别就在于'__main__'变成了'main'.

        到这里,应该能大致看出if __name__ == '__main__': 的作用了。如果我们直接运行.py文件,那么该文件下的__name__就是__main__, 而如果我们将.py 文件当作模块导入, 被导入文件中的__name__ 就是main。如果被导入文件中直接调用了某个函数,在解析导入这个模块时, 该函数就会执行。

        因此,在大型程序开发当中,主程序调用了大量函数,如果有其他模块需要将主程序当作模块导入,在导入时主程序所调用的函数都会执行一遍,导致程序混乱。这时,让主程序函数运行的条件是__name__ == '__main__', 就可以确保只有在运行此文件的情况下,文件中被调用的函数才会执行。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归闲先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值