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

 

转载于:https://www.cnblogs.com/youzhatongnian925280337/p/9893245.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值