网上相关的解释很多,有两篇文章与回答讲得比较清晰。
结合两个文章来看,当你直接运行当前这个A.module时,其中的name这个变量的值就被设定为了"main";而假设如果你从B.module中导入这个A.module时,A.module中的name变量就会被设定为A.module的名称,也就是A。
有一种常用的情况使用if__name__=='main'
语句:当我们想一个语句只在module独立运行时执行,而不允许其在其他模块引用时执行,我们就可以使用这个语句。
#!/usr/bin/python
# Filename: using_name.py
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
$ python using_name.py
This program is being run by itself
$ python
>>> import using_name
I am being imported from another module
#输出I am being ....是因为using_name.py是作为其他module导入的
所以它的__name__被改为它的模块名,
也就是__name__='using_name',不再是'__main__'所以执行了else语句。
>>>