产生条件
- 外部函数中定义了内部函数
- 内部函数引用了外部函数中的变量
- 外部函数是有返回值,并且返回的值是:内部函数名
定义格式
def 外部函数():
...
a = ...
def 内部函数():
...
调用a...
return 内部函数
举例
// 定义
def func(a, b):
c = 10
def inner_func():
s = a + b + c
print(s)
return inner_func
// 调用
ifunc = func(3, 5)
ifunc()
作用
- 可以使用同级的作用域
- 读取其他元素的内部变量
- 延长作用域
缺点
- 作用域没有那么直观
- .闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,变量不会被垃圾回收,所以有一定的内存占用问题,消耗内存