__name__属性

则这个模块为主模块。我们可以把"__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__"






转载于:https://my.oschina.net/yanxiaoshuai/blog/471356

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值