python基础知识之装饰器wrapper

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python基础知识之装饰器wrapper 装饰器的作⽤:
不想修改函数的调⽤⽅式但是⼜想在原来的函数前后添加新的功能
装饰器的原则:开放封闭原则
对扩展是开放的
对修改是封闭的
装饰器语法糖:在被修饰函数头上添加@装饰器名
1.装饰器固定模式
def werpper(func):
def inner(*args,**kwargs):
ret=func(*args,**kwargs)
return ret
return inner
@werpper
def dom():
print("")
return""
dom()
View Code
2.完美模式
from functools import wraps
def werpper(func):
@wraps()#为了获取原函数信息例如dom.__name_获取原函数名_ dom.__doc__获取原函数信息
def inner(*args,**kwargs):
ret=func(*args,**kwargs)
return ret
return inner
@werpper
def dom():
print("")
return""
dom()
View Code
3.带参数装饰器
from functools import wraps
def demo(**kwargs):
def werpper(func):
@wraps()#为了获取原函数信息例如dom.__name_获取原函数名_ dom.__doc__获取原函数信息
def inner(*args,**kwargs):
ret=func(*args,**kwargs)
return ret
return inner
@demo("任何数据类型")
def dom():
print("")
return""
dom()
View Code
4.多个装饰器修饰⼀个函数
from functools import wraps
def demo2(**kwargs):
def werpper(func):
@wraps()#为了获取原函数信息例如dom.__name_获取原函数名_ dom.__doc__获取原函数信息
def inner(*args,**kwargs):
ret=func(*args,**kwargs)
return ret
return inner
def demo1(**kwargs):
def werpper(func):
@wraps()#为了获取原函数信息例如dom.__name_获取原函数名_ dom.__doc__获取原函数信息def inner(*args,**kwargs):
ret=func(*args,**kwargs)
return ret
return inner
@demo2("任何数据类型")
@demo1("任何数据类型")
def dom():
print("")
return""
dom()
"""执⾏顺序套娃形式
demo2 func()前-—> demo1 func()前——>func()——>demo1 func()后——>demo2 func()后"""
View Code。

相关文档
最新文档