python闭包
闭包:带运行环境的函数
用处:
- 从函数外可以读取函数内部的变量
- 让这些变量的值始终保持在内存中(也可以理解为保留当前运行环境)
返回函数,与闭包的关系是:闭包需要以返回函数的形式实现
1、返回的函数不会立即执行,需要再次调用,这样能让我们根据需求执行,节省计算资源
2、调用方法:
def foo(): def bar(): return 0 return bar a = foo() print(a()) # 再次调用才会执行,或者如下调用 print(foo()())
3、返回函数不要引用任何循环变量,或者后续会发生变化的变量
>>> def count(): ... fs = [] ... for i in range(1,4): ... def f(): ... return i*i ... fs.append(f) ... return fs ... >>> >>> f1, f2, f3 = count() >>> >>> >>> f1() 9 >>> f2() 9 >>> f3() 9
4、如果一定要引用循环变量,方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变
>>> def count(): ... def f(j): ... def g(): ... return j*j ... return g ... fs = [] ... for i in range(1,4): ... fs.append(f(i)) ... return fs ... >>> >>> >>> f1, f2, f3 = count() >>> >>> f1() 1 >>> >>> f2() 4 >>> f3() 9
参考:
1、https://blog.csdn.net/qq_41573234/article/details/81737454
2、https://www.cnblogs.com/ArsenalfanInECNU/p/9628836.html
浙公网安备 33010602011771号