查找资料的时候,经常看到别个的代码是带有__name__判断。如下这样的代码
这是什么东西能做什么用,今天我们就来简单了解下__name__这个系统变量。
简单定义
__name__ 就是标识模块的名字的一个系统变量 。
证明实例
1、首先写一个test1.py
#-- coding : UTF-8 --
def test():
print("test1 : __name__ ( %s )" %__name__)
test()
test1.py运行结果:
2、再写一个test2.py调用test1.py
import test1
def test():
print("test2 : __name__ ( %s )" %__name__)
test1.test()
test()
test2.py运行结果:
这里打印了两次,第一次实在main.py在进行import test1的时候,进行的打印,第二次才是test1.test()中执行的打印,可以发现,这里的
__name__
名称已经发成了变化,从之前的main变成了模块名称test1,而test2中的是main。
3、总结
1、__name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中,__name__ 的名称就是__main__如果不是,则为这个模块的名称(如test1)。
2、__main__一般作为函数的入口,类似于C语言,尤其在大型工程中,常常有if __name__ == "__main__":来表明整个工程开始运行的入口。
用法
将test1修改成:
#-- coding : UTF-8 --
def test():
print("test1 : __name__ ( %s )" %__name__)
if __name__ == "__main__":
test()
运行结果:
这里只打印了一次,在main.py在进行import test1的时候,这一次因为判断到不是
__name__所以没有打印
,真正的打印是在test1.test()中执行的打印。这个判断(if __name__ == "__main__":)可以用来做模块化代码测试,而不用担心被别的模块调用时执行到。