函数闭包 嵌套函数的外层函数有返回值,且外层函数的返回值是内层函数,内层函数引用了外层函数的变量。
格式:
def 外层函数():
a=1
def 内层函数():
print(a)
return 内层函数
闭包的优点:
1.引用了外层函数的局部变量,保存了变量状态
2.使代码变得简洁,便于阅读代码
闭包的缺点:
1.作用域没那么直观
2.因为变量不会立即被垃圾回收所以有一定的内存占用问题
闭包的作用:
1.可以使用同级的作用域
2.读取其他元素的内部变量
3.延长作用域
闭包总结:
1.闭包优化了变量,原来需要类对象完成的工作,闭包也能完成
2.由于闭包引用了外层函数的局部变量,所以外层函数局部变量所占内存没有及时释放,消耗内存
3.使代码变得简洁,便于阅读代码
4.闭包是装饰器的基础
函数装饰器
函数装饰器是指装饰的是一个函数,传入的是一个函数,返回的也是一个函数的函数
格式1–不带参数:
# 定义装饰器
def func1(func):
a=1
def wrapper():
print(a)
func()