python 里__name__属性是一个特殊变量:
1、__name__是一个变量。前后加了双下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
2、Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3、import的时候是要执行所import的模块的。
4、__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。
通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。
例:
# -*- coding: utf-8 -*-
' a test module ' #文档注释 可通过 __doc__ 访问
__author__ = 'frala' #作者注释
import sys
def test():
args = sys.argv
if len(args)==1:
print ('Hello world!')
elif len(args)==2:
print ('Hello,%s' % args[1])
else:
print ('Too many arguments!')
if __name__ == '__main__':
test()
由于此程序是主程序,所以一旦执行
因为__name__ == '__main__',进入if,所以会执行test函数。
import hello
print (hello.__name__)
现在hello模块中的__name__=='hello' ,不再是‘__main__’了。
所以hello模块中 不在进入if语句。