引入闭包
我们知道当函数调用完,函数内定义的变量都销毁了,但是我们有时候需要保存函数内的某个变量,每次在这个变量的基础上完成一些列的操作,比如:每次在这个变量的基础上和其它数字进行求和计算,那怎么办呢?
我们就可以通过咱们今天学习的闭包来解决这个需求。
1 闭包的定义
在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数
称为闭包
。
- 闭包的构成条件
① 在函数嵌套(函数里面再定义函数)的前提下
② 内部函数使用了外部函数的变量(还包括外部函数的参数)
③ 外部函数返回了内部函数
2 简单闭包的示例代码
def func_out(num1):
def func_inner(num2): # 内部函数使用了外部函数的变量(num1)
result = num1 + num2
print("结果是:", result)
return func_inner # 外部函数返回了内部函数,这里返回的内部函数就是闭包
f = func_out(1) # 创建闭包实例
f(2) # 执行闭包 1 + 2 = 3
f(3)
===运行结果:=================================================================
结果是: 3
结果是: 4
2.1
闭包执行结果的说明
- 通过上面的输出结果可以看出闭包保存了外部函数内的变量num1,每次执行闭包都是在num1 = 1 基础上进行计算;
- 闭包可以保存外部函数内的变量,不会随着外部函数调用完而销毁;
- 由于闭包引用了外部函数的变量,则外部