python3 装饰器

def myDecorator(...):    #定义装饰器,可能带参数
  def decorator(func): #装饰器核心,以被装饰的函数对象为参数,返回装饰后的函数对象
    def wrapper(*args, **kvargs): #装饰的过程,参数列表适应不同参数的函数
      ... #修改函数调用前的行为
      func(*args, **kvargs) #调用函数
      ... #修改函数调用后的行为
    return wrapper
   return decorator

@myDecorator(...):    #给函数加上装饰器
def myFunc(...):     #自己定义的功能函数
...

def setTag(tag): #由于此装饰器需要参数,所以要再套一层
  def myDecorator(func): #装饰器的核心,接受函数对象做参数,返回包装后的函数对象
    def myWrapper(*arg, **kvargs): #包装的具体过程
      sign = "<" + tag + ">"
      return sign + func(*arg, **kvargs) + sign
     return myWrapper
    return myDecorator

@setTag("div") #用@标签在定义函数时套上装饰器
def hello(name):
  return 'hello' + name

posted @ 2018-08-30 16:39  alsoalso  阅读(106)  评论(0编辑  收藏  举报