1.1 装饰器
装饰器的作用:在不改变原函数的情况下给函数增加功能
装饰器由闭包和语法糖组成
1.2 闭包
闭包特点:
外部函数嵌套内部函数
内部函数可以访问并且保存外部函数的变量
外部函数返回内部函数的引用
有以上三个特点的函数就称为闭包
闭包的例子:
def func1(a):
def func2(b):
return a+b
return func2
f1 = func1(100)
f2 = func1(50)
print(f1(1))
print(f1(1))
闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成
由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存
1.3 装饰器案例
def checkaccess(sg):
def check():
name = input(“输入用户名”)
if name == “zzy”:
sg()
else:
print(“无权查看”)
return check
@checkaccess
def selectgoods():
print(“开始查询商品”)
selectgoods()
1.5 装饰器使用的场景
引入日志
函数执行时间统计
执行函数前预备处理
函数执行后清理功能
权限校验等场景
缓存