python基礎知識之裝飾器wrapper
阿新 • • 發佈:2018-11-13
裝飾器的作用:
不想修改函式的呼叫方式但是又想在原來的函式前後新增新的功能
裝飾器的原則:開放封閉原則
對擴充套件是開放的
對修改是封閉的
裝飾器語法糖:在被修飾函式頭上新增@裝飾器名
1.裝飾器固定模式
def werpper(func): def inner(*args,**kwargs): retView Code=func(*args,**kwargs) return ret return inner @werpper def dom(): print("") return "" dom()
2.完美模式
from functools import wraps def werpper(func): @wraps()#為了獲取原函式資訊 例如dom.__name_獲取原函式名_ dom.__doc__獲取原函式資訊 def inner(*args,**kwargs): retView Code=func(*args,**kwargs) return ret return inner @werpper def dom(): print("") return "" dom()
3.帶引數裝飾器
from functools import wraps def demo(**kwargs): def werpper(func): @wraps()#為了獲取原函式資訊 例如dom.__name_獲取原函式名_ dom.__doc__獲取原函式資訊 def inner(*args,**kwargs): retView Code=func(*args,**kwargs) return ret return inner @demo("任何資料型別") def dom(): print("") return "" dom()
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