__name__ 是 python 的一个内置变量,它的值等于 '__main__' ,如下:
[root@localhost ~]$ cat talk.py #!/usr/bin/env python #-*- coding:utf-8 -*- print __name__
[root@localhost ~]$ python talk.py __main__
如果被当做模块导入,它的值等于模块名本身,如下:
[root@localhost ~]$ cat think.py #!/usr/bin/env python #-*- coding:utf-8 -*- import talk
[root@localhost ~]$ python think.py
talk
基于这个特性,我们可以这样来写脚本:
(1) 如下,当执行 talk.py 脚本时,__name__ 的值会等于 '__main__' ,因此 talk() 函数会被执行
(2) 当该脚本被作为模块导入时,__name__ 的值不等于 '__main__' ,因此相当于只导入了函数而不执行函数,等到要执行的时候再自行调用
[root@localhost ~]$ cat talk.py #!/usr/bin/env python #-*- coding:utf-8 -*- def talk(): print 'My name is Tom' print 'My age is 23' print 'I am talking...' if __name__ == '__main__': talk()
[root@localhost ~]$ cat think.py #!/usr/bin/env python #-*- coding:utf-8 -*- import talk