1. 程式人生 > >裝飾器進階1

裝飾器進階1

# 裝飾器
# 開發原則 : 開放封閉原則
# 裝飾器的作用 :在不改變原函式的呼叫方式的情況下,在函式的前後新增功能
# 裝飾器的本質 : 閉包函式

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 import
wraps 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