Python的__name__变量

我们经常看到Python代码中包含这样的代码:

if __name__ == '__main__':
    something...

这条语句的作用主要用来区分文件是主动执行的,还是被调用执行的。 如果当前文件是主动执行的,__name__ 变量的值就是:__main__,如果是 被导入执行的,则是被导入的文件名,比如有文件:test.py,如果执行:python test.py,那么,test文件的__name__变量值就是:__main__,如果:

import test
test.__name__

那么值就是:test。


除了要知道这个以外,还要知道一点就是,代码中带有“定义”功能的代码,是不被执行的。也就是说,代码中的函数、类的定义代码不会被执行。只要调用函数的代码才会执行函数功能。所以,再来看下test.py文件代码:

print 'abc'

def sayHello():    # 函数定义不被执行
    print 'hello'

print 'def'

if __name__ == '__main__':
    print 'this is main of module'
    sayHello()

文件的执行顺序总是从文件头到文件尾的,我们来观察这个文件的执行情况:

1)文件主动执行,输出结果:

abc
def
this is main of module   # if 语句部分,由于主动执行,变量__name__ 的值是 __main__,所以条件为真,执行该条件下的语句体
hello                    # if 语句部分

2)导入执行,输出结果:

abc
def
由于是被导入执行的,所以变量 __name__ 的值是:test,不等于'__main__',故条件为假,不执行条件语句体。

嗯,大概就是这样,知道这些后,其实比较简单了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值