__name__属性

原创
2015/06/26 18:20
阅读数 14
先明白什么是主模块。如果一个模块的"__name__"属性为"__main__",

则这个模块为主模块。我们可以把"__name__"看作是一个变量,以这个变量的值是否为主模块。

首先得出两个结论:

    1.如果一个模块是被直接执行,则"__name__"的值为"__main__"

    2.如果一个模块是被导入,则"__name__"的值为这个被导入的模块的值


两个例子:

#modules.py

def main():
    print "This is %s" % __name__

if __name__ == "__main__":
    main()
else:
    print "This is not __main__

# 输出结果:This is __main__

  

#test.py

from modules import main

main()

print __name__


#  输出结果:        
#This is not __main__
#This is modules.
# __main__

  过程解释:当我执行modules.py文件的时候,首先对if进行判断,因为这是直接执行,所以"__name__"属性值为"__main__"。因此执行"main()"语句。所以输出的结果为"__main__"。

    而在test.py中,因为我们导入了modules模块。在调用modules模块的main()函数时,此时的"__name__"属性的值为modules,所以if语句结果为False,因此执行else后面的语句。然后进入main()函数,所以输出的结果为"This is modules"。

而testpy中的"print   __name__"语句,因为是自己直接执行,因此结果为"__main__"






展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部