在外部调用某个模块时,可能会将只能在本模块执行的代码给执行了,有没有什么办法让某些特定的代码指定只能在自身运行时才执行被调用时不执行呢?使用if __name__ == '__main__':
。
示例代码:
创建Demo
模块test.py
def Demo(num):
"""
:param num: 接收一个数
:return: 返回该数乘自己的结果num**2
"""
return num ** 2
print("第一次测试:", Demo(1))
print("第二次测试:", Demo(6))
创建调用代码:
test2.py
from Demo4 import Demo
print("计算3的倍数结果:", Demo(3))
执行结果:
第一次测试: 1
第二次测试: 36
计算3的倍数结果: 9
我们可以看到当我们调用时把test.py
中使用的测试代码也执行了,这显然不是我们想要的结果:
代码改进:test.py
def Demo(num):
"""
:param num: 接收一个数
:return: 返回该数乘自己的结果num**2
"""
return num ** 2
if __name__ == '__main__': # 当自直接运行本文件时执行以下代码
print("第一次测试:", Demo(1))
print("第二次测试:", Demo(6))
test2.py
from Demo4 import Demo
print("计算3的倍数结果:", Demo(3))
执行结果:
计算3的倍数结果: 9
我们可以看到添加if __name__ == '__main__':
后我们可以把调用时不需要执行的代码放到if __name__ == '__main__':
下方,这样既不会影响到本模块的执行,也不会影响到调用方。
说明:
在每个模块的定义中都包括一个记录模块名称的变量__name__
,程序可以检查该变量,以确定他们在哪个模块中执行,如果一个模块不被导入到其他程序中执行,那么他可能在解释器的*模块中执行。*模块的__name__
变量值为__main__
.