修饰符模板

无参装饰器函数模板

from functools import wraps

def 装饰器名称(func):

  @wraps(func)

  def wrapper(*args,**kwargs):

    1.调用修饰函数之前要执行的代码

    2.根据需要调用修饰函数,如果需要返回结果

    return func(*args,**kwargs)

    3.执行而不是调用修饰函数的代码

  return wrapper

使用方法:@装饰器名称   -----没有括号

含参装饰器模板

from functools import wraps

def 装饰器外套名称(参数变量名=默认值)

  def 装饰器名称(func):

    @wraps(func)

    def wrapper(*args,**kwargs):

      1.调用修饰函数之前要执行的代码

      2.根据需要调用修饰函数,如果需要返回结果

      return func(*args,**kwargs)

      3.执行而不是调用修饰函数的代码

    return wrapper

  return 装饰器名称

使用方法:@装饰器外套名称(参数)     ----必须要有括号,使用默认参数时可以不传参,没有默认传参必须传参

 

装饰器类模板

from functools import wraps

class logit(object):

  def __init__(self, logfile='out.log'):

    self.logfile = logfile

 

  def __call__(self, func):#如果在类中实现了 __call__ 方法,那么实例对象也将成为一个可调用对象

    @wraps(func)

    def wrapper(*args,**kwargs):

      1.调用修饰函数之前要执行的代码

      .根据需要调用修饰函数,如果需要返回结果

      return func(*args,**kwargs)

      3.执行而不是调用修饰函数的代码

    return wrapper

使用方法:类名()  ----这里的括号代表实例化

可以通过继承扩展装饰器类(__init__使用超继承)

 

参考:https://www.runoob.com/w3cnote/python-func-decorators.html

posted @ 2020-07-01 01:20  luckytian  阅读(107)  评论(0)    收藏  举报