Python中的if __name__ == ‘__main__‘什么意思?

什么是 __name__ 和 __main__ ?

为了解释这个问题,我们首先构造一个程序文件module1.py,内容如下:

def func1():
    print('hello')
    print('the __name__ of module1 is: ' + __name__)

if __name__ == '__main__': # 很显然,这是一个条件语句
    func1()
    print('Now it\'s in module1')

当我们运行module1.py时,输出的结果为:

hello
the __name__ of module1 is: __main__
Now it's in module1

由输出可以知道,此时__name__就等于__main__。其实,python代码在每次运行时,就会有一些初始化好的内置变量,而__name__就是其中之一。当在本文件(当前程序)中运行时,__name__就等于__main__,否则__name__等于所在文件/模块的名称。

与module1.py在同一文件夹下,我们构造module2.py,内容如下:

import module1

module1.func1()

print('the __name__ of module2 is: ' + __name__)

运行modul2.py,输出为

hello
the __name__ of module1 is: module1
the __name__ of module2 is: __main__

上述输出结果证明了在当前环境下,func1中的__name__等于它所在的模块/文件名,即module1;而当前文件的__name__等于__main__

什么是 if __name__ == ‘__main__’ ?

现在这个问题就很简单了。这条语句的意思就是:检查当前环境下的__name__是否等于__main__,如果等于,就执行if语句体的内容。

if __name__ == ‘__main__’ 有什么用?

if __name__ == '__main__'这条语句只有在__name__所对应的文件下才会满足条件,所以,if语句体(body)的内容也只有在对应文件下才会执行,而这一特点在python设计模块(module)时带来极大的便利。

当我们设计好一个模块后,我们想运行一些测试代码,而这些测试代码我们不希望在别的文件import本模块时引入,造成干扰。解决方案就是我们把测试代码放入if __name__ == '__main__'之后,这样,只有在运行测试本模块(本文件)时,测试代码才会执行。

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值