python中if __name__ == '__main__' 的理解

以下回答来自于知乎:
作者:秋雨mac
链接:https://www.zhihu.com/question/49136398/answer/208021240
来源:知乎
著作权归作者所有。

在Python中,一个.py文件就是一个模块,一般情况下,模块的名字就是文件名(不包括扩展名.py)。全局变量name存放的就是模块的名字。而特殊情况就是,当一个模块作为脚本执行时或者在交互式环境中,如Ipython、Python自带的shell等直接运行代码,name的值不再是模块名,而是mainmain是顶层代码执行作用域的名字。参见main — Top-level script environment:A module can discover whether or not it is running in the main scope by checking its own name, which allows a common idiom for conditionally executing code in a module when it is run as a script or with python -m but not when it is imported:if name == “main“:
# execute only if run as a script
main()
也就是说,通过name的值,我们可以判断出该模块是作为脚本正在执行还是被其他模块导入,而根据这个判断,我们就可以选择性地执行代码。将只有模块作为脚本执行时的代码放入到if name == ‘main‘:
条件中,比如执行单元测试等。而当模块被其他模块通过import等语句导入时,Python解释器会首先检查模块注册表sys.modules中是否有该模块,如果有,则直接利用存在的模块对象的名字空间中的变量;如果没有,创建一个空的模块对象,将其添加到sys.modules中,在以该模块名为名的名字空间下执行该模块,除了if name == ‘main‘: 条件中的代码,而被执行代码中定义的变量在该名字空间下都是可访问的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值