函数闭包
闭包的定义
在函数的嵌套前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数的引用(内部函数的名字),
核心点是内部函数使用外部函数的变量,我们把这个构造叫做闭包。
闭包的意义:函数被调用完,函数内的局部变量会被销毁,为了方便保存进行闭包操作
闭包的构成条件
- 在函数嵌套的前提下形成
- 内部函数使用了外部函数的变量
- 外部函数返回了内部函数的引用(内部函数的名字)
def func_out(num1): # num1=110
def func_inner(num2): # num2 = 120
result = num1 + num2
print(f"外部函数的值{num1},和内部函数的值{num2},相加的结果是{result}")
# 外面的函数返回里面的函数名字(里面函数的引用)
return func_inner
# 闭包函数的执行流程:10-----1----7
f = func_out(110) # f = func_inner
# 12----2---3----4
f(120) # f(120) = func_inner(120)
# 简写:func_out(110)=func_inner(120)
func_out(110)(120)
总结闭包的作用:
- 闭包可以保存外部函数的变量,不会随着外部函数调用完就被销毁
- 由于闭包引用了外部函数的变量,外部函数的变量并没有得到释放,会保存到内存进行消耗。
- 函数的引用(函数的名字)可以进行传递,如果复制给一个变量,那么该变量加上括号()那么就可以进行调用指向的函数引用