裝飾器函數
阿新 • • 發佈:2017-07-28
col span def lag mil outer 裝飾 rgs ret
裝飾器的本質:一個閉包函數
裝飾器的功能:在不修改原函數及其調用方式的情況下對原函數功能進行擴展
裝飾器滿足開放封閉原則:
1,對擴展是開放的
2,對修改是封閉的
裝飾器的主要功能:
在不改變函數調用方式的基礎上在函數的前、後添加功能。
裝飾器的固定格式:
def timmer(func): def inner(*args,**kwargs): ‘‘‘添加函數調用之前的擴展代碼‘‘‘ ret = func(*args,**kwargs) ‘‘‘添加函數調用之後的擴展代碼‘‘‘ return retreturn inner
帶參裝飾器
F =True def outer(flag): def wrapper(func): def inner(*args,**kwargs): if flag: print(‘before‘) ret = func(*args,**kwargs) print(‘after‘) else: ret = func(*args, **kwargs)return ret return inner return wrapper
裝飾器的應用
l = [] def wrapper(func): l.append(func) #統計當前程序中有多少個函數被裝飾了 def inner(*args,**kwargs): #l.append(func) #統計本次程序執行有多少個帶這個裝飾器的函數被調用了 ret = func(*args,**kwargs) return ret return inner
裝飾器函數