从转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__
的值