闭包的流程图
闭包的流程图
通过 f = func_out(10) 创建闭包:外部函数执行结束后,内部函数仍然“记住”了外部函数的局部变量(例如 10)。
逐步理解
- 调用外部函数
func_out(10):- 生成内部函数
func_inner - 把外部变量(例如
num=10)保存到闭包环境 - 返回
func_inner
- 生成内部函数
- 赋值:
f = func_out(10),此时f指向内部函数 - 调用:
f()等价于调用func_inner(),并且它能访问外部变量num
对照代码(示意)
def func_out(num):
def func_inner():
return num + 1
return func_inner
f = func_out(10)
f()
