从转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()

并没有变化
总结
- __name__属性是模块自带的变量
- 当模块独立运行时,其值为
"__main__",当被其他模块引用时
其值为"模块名"或"包名.模块名" - 别名的使用并不会影响
__name__的值
本文深入探讨了Python中if __name__ == '__main__'的用途与机制。通过实验验证,解释了__name__属性如何区分模块的独立运行与被导入状态,揭示了Python模块加载过程中的核心细节。
697

被折叠的 条评论
为什么被折叠?



