装饰器:本身就是函数,功能是为其他函数添加附加功能
原则:
1.不修改被修饰函数的源代码
2.不改变被修饰函数的调用方式
装饰器=高阶函数+函数嵌套+闭包
装饰器的架子:
def zhuangshiqi(func):
def wrapper(*args,**kwargs):
...
res=func(*args,**wargs)
...
return res
return wrapper
@zhuanshiqi #beixiushi=zhuangshiqi(beixiushi) 返回的是wrapper地址赋给beixiushi
def beixiushi():
.....
beixiushi()