装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。
# 定义装饰器
def outter(func):
def wrapper(*args,**kwargs):
print("调用函数")
return func(*args,**kwargs)
return wrapper
# 通过函数调用使用
def mysum(x,y):
return x+y
mysum = outter(mysum)
mysum(1,2)
# 通过语法糖使用装饰器
# @outter 等价于 mysum = outer(mysum)
@outter
def myavg(x,y,z):
return (x+y+z)/3
myavg(1,2,3)