day15 装饰器

关于函数的装饰器

1 .装饰器,(难点,重点)

开闭原则:  

  对功能的扩展开放

  对代码的修改是封闭

 通用装饰器语法:

def wrapper(fn):

  def inner(*args,**kwargs):

    在目标函数之前加功能

    ret=fn(*args,**kwargs)

    在目标函数之后加功能

    return ret

  return inner

@wrapper  @就表示装饰器

def func():

  pass

func()  

2. 同一个函数被多个装饰器装饰  (就近原则)

@wrapper1

@wrapper2

@wrapper3

def func:

  pass

装饰效果 :  1 2 3 func 3 2 1

3. 带参数的装饰器  ( 略 微 难 受 )

def wrapper_out(参数):

  def wrapper(fn):

    def inner(*args,**kwargs):

      在目标函数之前

      net=fn(*args,**kwargs)

      在目标函数之后

      return net

    return inner

  return wrapper

@wrapper_out(实参)  #执行的时候,先执行函数的调用,将返回值和前面的@组合成装饰器语法糖

def func():

  pass

func()

posted @ 2018-12-15 20:04  想扣篮的小矮子  阅读(70)  评论(0编辑  收藏  举报