Python基础:__name__浅析

本文深入探讨了Python中if __name__ == '__main__'的用途与机制。通过实验验证,解释了__name__属性如何区分模块的独立运行与被导入状态,揭示了Python模块加载过程中的核心细节。

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

从转Python开始就经常见到Python主函数的写法

if __name__ == "__main__":

不过以前都是一带而过
只当是特定的写法
别人怎么写我就怎么写咯
不过今天突然有点好奇
于是写了几个Module对__name__的作用进行了一些验证

Independent Module

print("independent module: __name__ ==", __name__)

作为一个独立Module运行时输出结果是
在这里插入图片描述

Sub Module

def nameTest():
    print(__name__)


if __name__ == "__main__":
    print("run as independent module,__name__ ==")
    nameTest()

作为独立Module运行时
在这里插入图片描述然后写一个父模块调用这个子模块

Ancestor Module

import SubModule
if __name__ == "__main__":
    SubModule.nameTest()

在这里插入图片描述
如果换一种导入方式

from __name__test import SubModule
if __name__ == "__main__":
    SubModule.nameTest()

在这里插入图片描述

加一个别名定义试试

from __name__test import SubModule as SM
if __name__ == "__main__":
    SM.nameTest()

在这里插入图片描述
并没有变化

总结

  1. __name__属性是模块自带的变量
  2. 当模块独立运行时,其值为"__main__",当被其他模块引用时
    其值为"模块名""包名.模块名"
  3. 别名的使用并不会影响__name__的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值