裝飾器進階1
阿新 • • 發佈:2018-11-07
# 裝飾器 # 開發原則 : 開放封閉原則 # 裝飾器的作用 :在不改變原函式的呼叫方式的情況下,在函式的前後新增功能 # 裝飾器的本質 : 閉包函式 def wrapper(func): def inner(*args,**kwargs): print('在被裝飾的函式執行之前做的事') ret = func(*args,**kwargs) print('在被裝飾的函式執行之後做的事') return ret return inner @wrapper #holiday = wrapper(holiday)def holiday(day): print('全體放假%s天'%day) return '好開心' ret = holiday(3) print(ret) def outer(*args): print(args) print(*args) def inner(*args): print('inner : ',args) inner(*args) outer(1,2,3,4) #==outer(*[1,2,3,4]) #==outer(*(1,2,3,4))
from functools importwraps def wrapper(func): #func = holiday @wraps(func) def inner(*args,**kwargs): print('在被裝飾的函式執行之前做的事') ret = func(*args,**kwargs) print('在被裝飾的函式執行之後做的事') return ret return inner @wrapper #holiday = wrapper(holiday) def holiday(day): '''這是一個放假通知'''print('全體放假%s天'%day) return '好開心' print(holiday.__name__) print(holiday.__doc__) ret = holiday(3) #inner print(ret) # def wahaha(): # ''' # 一個列印娃哈哈的函式 # :return: # ''' # print('娃哈哈') # print(wahaha.__name__) #檢視字串格式的函式名 # print(wahaha.__doc__) #document