我先举个例子 代码如下:
def test(a,b,c):
print( a*b+c)
test(1,1,2)
test(1,1,3)
test(1,1,4)
test(1,1,5)
test(1,1,6)
test(2,2,1)
test(2,2,2)
test(2,2,3)
test(2,2,4)
我们会发现一个共同的问题, a,b 是固定的,只是c 会变动,如何减少a,b 参数的传递, 开发的信仰咱们忘了吗 , 不写重复的代码 。
那如何解决呢, 就用到闭包 , 修改下
def test(a,b):
def test_in(c):
print( a*b+c)
return test_in
num=test(1,1) # 把test_in 引用交给了num
num(2) # 执行 内嵌函数
num(3) # 达到了减少 参数的传递,
num(4)
num(5)
num_02=test(2,2) # 如果不想用上边的 a,b 值 可以用重新创建新的引用 num_02
num_02(2)
num_02(3)
num_02(4)
num_02(5)
num(6) # 这个依然会继续执行, 还是按照a=1,b=1 他们是开辟两个不同的空间。