我们经常看到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)导入执行,输出结果:由于是被导入执行的,所以变量 __name__ 的值是:test,不等于'__main__',故条件为假,不执行条件语句体。abc def
嗯,大概就是这样,知道这些后,其实比较简单了。