(一看必懂) Python 自定义模块中的 if __name__=='__main__': 详细解读

一. 在解释之前首先我们看下 __name__ 这个变量存的是什么?

#!/usr/bin/env python
# -*- coding:utf-8 -*- 

print(__name__)

# 执行结果:
__main__

结果分析:

  • 当我们运行的本程序的时候,__name__ 这个内置变量值就是 __main__

 

二. 下面我们来看下导入模块时候 __name__ 变量值

  • test.py代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*- 

def main():
    print("this is before if __name__:%s" % __name__)


if __name__=='__main__':
    main()
    print("this is after if __name__:%s" % __name__)
  • 导入 test 模块并执行
#/usr/bin/env python
# -*- coding:utf-8 -*-

# 导入我们自定义的 test 模块
import test

# 调用 test 模块里的 main 方法
test.main()


# 执行结果:
# 此时 __name__ 指向的而是 test 模块的名字
this is before if __name__:test

结果分析:

  • 可以看到,导入模块后变量 __name__ 值为 test 模块名,并 没有执行 if 中的语句

 

总结:

  • if __name__=='__main__' 说白了,就是判断 __name__ 变量是不是等于 __main__,
    • 当执行文件本身时候 __name__ 变量等于 __main__,此时判断成立并执行判断语句中的代码
    • 当调用该模块的时候 __name__ 并不等于__main__,条件不成立,不执行 if 判断下面的语句
    • 这里可以认为为了方便调试模块,而在模块被导入的时候并不执行 if 下面的语句
  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值