1. 程式人生 > >2018.12.14 今日所學

2018.12.14 今日所學

關於函式的裝飾器

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()