if __name__ == '__main__'的理解

本文详细解析了Python中__name__属性的作用,当模块自身运行时其值为'__main__',而在被其他模块导入时则为模块名。通过此特性,开发者可在模块中设置测试代码,确保仅在直接运行时执行,避免作为依赖时的误触发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码1:
在这里插入图片描述
结果:
在这里插入图片描述
分析:
当直接运行test1.py时,内置的__name__属性会被赋值为__main__,因此会执行if语句的内容

代码2:
在这里插入图片描述
结果:
在这里插入图片描述
分析:import test_1也就是在test_2的模块中引入test_1模块,当我们直接运行test_2模块而不是test_1模块时,test_1模块中的内置属性__name__的值就不再是__main__(因为它现在是被别人调用的,而不是自己运行的),此时test_1模块的__name__的值为它这个模块的名字,也就是test_1,因此也没有执行test_1模块的if语句,而因为test_2模块是被直接执行的,因此它会执行if语句的内容。

作用:有了这个区别,我们就可以使用 if name == ‘main’ 内部写测试代码,自己运行自己这个才可以检测的内容,但是当别人调用时,这些测试代码不会被执行。用来区分是自己执行还是别人调用。

参考文章:
https://blog.csdn.net/HEERY551/article/details/94736960

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值