我们在模块中编写函数,供调用该模块的文件使用。
当我们在编写模块时,也写了一些测试代码,供编写模块的人自己使用。
但是这些测试对于调用者是没用的,也会执行。
举个例子:首先编写模块,并提供测试代码
def addFunc(a,b):
return a+b
print('test计算结果:',addFunc(1,1)) #测试代码
调用以上模块:
import test
print('调用test模块执行的结果是:',test.addFunc(12,23))
那么,执行结果是:
test计算结果: 2
调用test模块执行的结果是: 35
显然,第一句并不是调用者所需要的
为了解决这一问题,python提供了一个系统变量:__name__
注:name两边各有2个下划线
__name__有2个取值:当模块是被调用执行的,取值为模块的名字。当模块是直接执行的,则该变量取值为:__main__
于是乎,被调用模块的测试代码就可以写在if语句里了,如下:
def addFunc(a,b):
return a+b
if __name__ == '__main__':
print('test计算结果:',addFunc(1,1))
这样,如果模块被调用,测试代码就不会被执行了。