if __name__ == “__main__“ 用来干什么?

Python 解释器在读取 Python 文件时,会对一些特殊变量赋值,其中便有 __name__
Python 文件作为主程序运行时,__name__ 被赋值为 __main__。例如,新建 foo.py 文件,代码如下:

# foo.py
print(f"foo's __name__ is set to: {__name__}")

执行上面的代码,得到如下结果:

foo's __name__ is set to: __main__

由于 foo.py 是作为主程序执行的,所以 foo.py__name__ 被赋值为 __main__

Python 文件作为一个模块被导入时,它的 __name__ 被赋值为文件名。例如,新建 bar.py 文件,并对 foo.py 进行修改,bar.pyfoo.py 的内容如下:

# bar.py
print(f"bar's __name__ is set to: {__name__}")
# foo.py
import bar

print(f"foo's __name__ is set to: {__name__}")

执行 foo.py,得到如下结果:

bar's __name__ is set to: bar
foo's __name__ is set to: __main__

由于 bar.py 作为一个模块被导入,所以 bar.py__name__ 被赋值为文件名 bar

由于变量 __name__ 的上述特性,可以用来控制程序的执行,当 Python 文件作为主程序执行时,执行一部分代码;当 Python 文件作为一个模块被导入时,执行另外一部分代码。例如,修改 bar.pyfoo.py,修改后的内容如下:

# foo.py
import bar

print(f"foo's __name__ is set to: {__name__}")

if __name__ == "__main__":
    print("foo.py ran directly")
else:
    print('foo.py ran imported')
# bar.py

print(f"bar's __name__ is set to: {__name__}")

if __name__ == "__main__":
    print("bar.py ran directly")
else:
    print('bar.py ran imported')

执行 foo.py 文件,输出结果如下:

bar's __name__ is set to: bar
bar.py ran imported
foo's __name__ is set to: __main__
foo.py ran directly

当执行 foo.py 时,由于 bar.py 是作为模块被导入的,所以 bar.py__name__bar。而 foo.py 是直接执行的,所以 foo.py__name____main__

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值