模块属性_name_,它的值由Python解释器设定
1. 如果脚本文件是作为主程序调用,其值就设为main
2. 如果是作为模块被其他文件导入,它的值就是其文件名
# e3.py
#!/usr/bin/python
def printer(s):
print s
#e2.py
#!/usr/bin/python
import e3
print "e3.__name__ = ", e3.__name__
print "e2.__name__ = ", __name__
#执行结果
$ python e2.py
e3.__name__ = e3 #被调用时候, __name__为模块的名字,即文件名
e2.__name__ = __main__ #直接执行,__name__为__main__
这个属性非常有用,常可用来进行模块内置测试使用,经常在一些地方看到类似于下面的写法,这些语句只在作为主程序调用时才被执行。
#!/usr/bin/python
def printer(s):
print s
if __name__ == "__main__":
printer("hello python")