#裝飾器形成的過程 : 最簡單的裝飾器 有返回值的 有乙個引數 萬能引數
#裝飾器的作用
#原則 :開放封閉原則
#語法糖 :@
#裝飾器的固定模式
import
time
#print(time.time()) # 獲取當前時間
#time.sleep(10) #讓程式在執行到這個位置的時候停一會兒
#def timmer(f): #裝飾器函式
#def inner():
#start = time.time()
#ret = f() #被裝飾的函式
#end = time.time()
#print(end - start)
#return ret
#return inner##
@timmer #語法糖 @裝飾器函式名
#def func(): #被裝飾的函式
#time.sleep(0.01)##
return '新年好'
## func = timmer(func)
#ret = func() #inner()
#print(ret)
#裝飾器的作用 —— 不想修改函式的呼叫方式 但是還想在原來的函式前後新增功能
#timmer就是乙個裝飾器函式,只是對乙個函式 有一些裝飾作用
#原則: 開放封閉原則
#開放 : 對擴充套件是開放的
#封閉 : 對修改是封閉的#封版
#def outer():
#def inner():
#return 'inner'
#inner()##
outer()
#裝飾帶引數函式的裝飾器
#def timmer(f): #裝飾器函式
#def inner(*args,**kwargs):
##(1,2) /(1)
#start = time.time()
#ret = f(*args,**kwargs) #f(1,2) #被裝飾的函式
#end = time.time()
#print(end - start)
#return ret
#return inner##
@timmer #語法糖 @裝飾器函式名
#def func(a,b): #被裝飾的函式
#time.sleep(0.01)##
return '新年好'##
@timmer #語法糖 @裝飾器函式名
#def func1(a): #被裝飾的函式
#time.sleep(0.01)##
return '新年好'
## func = timmer(func)
#ret = func(1,2) #inner()
#ret = func(1,b = 2) #inner()
#print(ret)##
def inner(*args,**kwargs):
#'''在被裝飾函式之前要做的事'''
#ret = f(*args,**kwargs) #被裝飾的函式
#'''在被裝飾函式之後要做的事'''
#return ret
#return inner##
#def func(a,b): #被裝飾的函式
#time.sleep(0.01)##
return '新年好'##
def inner():
#pass
#return inner
qqxing
def inner(*args,**kwargs):
ret = func(*args,**kwargs) #
被裝飾的函式
return
ret
return
inner
#def
qqxing():
print(123)
ret = qqxing() #
inner##
講解元旦作業 擴充套件裝飾器
python裝飾器 Python 裝飾器
簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...
python裝飾器 裝飾器
由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...
python裝飾器原理 Python裝飾器原理
裝飾器 decorator 是物件導向設計模式的一種,這種模式的核心思想是在不改變原來核心業務邏輯 的情況下,對函式或類物件進行額外的修飾。python中的裝飾器由python直譯器直接支援,其定義形式如下 decorator def core service 要理解上述 的含義,我們從自定義函式裝...