闭包
- 定义:
在一个函数内部有函数,同时内部函数又引用了外部函数的变量. - 特点: 逻辑连续(外部函数调用完不释放内存,内部函数可以继续使用).
- 三要素:
– 必须有一个内嵌函数;
– 内嵌函数必须引用外部函数中的变量;
– 外部函数返回值必须是内嵌函数(不带括号). - 语法:
--定义
def 外部函数名(参数):
外部变量
def 内部函数名(参数):
使用外部变量
return 内部函数名
--调用
变量 = 外部函数名(参数)
变量(参数)
--示例
#定义
def fun01():
a = 10
def fun02(b):
print(a+b)
return fun02
#re 变量 指向的是 内部函数
re = fun01() #调用外部函数 ---> 执行完毕后,不释放栈帧.
re(3) #13, 调用内部函数
-
本质:
闭包是将内部函数和外部函数的执行环境绑定在一起的对象. -
优点:
内部函数可以使用外部变量. -
缺点:
外部变量一直存在于内存中,不会在调用结束后释放,占用内存. -
作用:
实现python装饰器