裝飾器的作用
在不修改原有函式的基礎之上新增指定的功能屬性;主要應用與開放封閉原則中。
示例
importview codetime
def timmer(f): #
裝飾器函式
definner():
start =time.time()
ret = f() #
被裝飾的函式
end =time.time()
print(end -start)
return
ret
return
inner
#@timmer #語法糖 @裝飾器函式名
def func(): #
被裝飾的函式
time.sleep(0.01)
print('')
return
'新年好
'func =timmer(func)
ret =func()
print(ret)
情景1:基本裝飾器
import情景2:強化裝飾器-有返回的裝飾器time
def
deffunct():
start =time.time()
func()
end =time.time()
return
funct
deffunc():
time.sleep(0.5)
print('
test')
func()
import情景3:強化裝飾器-有乙個引數time
def
def start =time.time()
ret =func()
end =time.time()
return
ret
return
deffunc():
time.sleep(0.5)
print('
hello world')
return
'hello world
'print(func())
import情景4:強化裝飾器-有無窮引數time
def timmer(f): #
裝飾器函式
def inner(*args):
#(1,2) /(1)
start =time.time()
ret = f(*args) #
f(1,2) #被裝飾的函式
end =time.time()
print(end -start)
return
ret
return
inner
@timmer
#語法糖 @裝飾器函式名
def func(a): #
被裝飾的函式
time.sleep(0.01)
print('
',a)
return
'新年好
'ret = func(1)
print(ret)
importqqxingtime
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)
print('
',a,b)
return
'新年好
'ret = func(1,b = 2)
print(ret)
def inner(*args,**kwargs):
ret = func(*args,**kwargs) #
被裝飾的函式
return
ret
return inner
python中的裝飾器
其實去年就開始學python了,零零散散,陸陸續續學了點,期間學習了python web開發,爬蟲系統 但是一些基礎性的知識點長時間不看了就會忘,所以寫個部落格記錄下來,忘了可以隨時檢視,不用回去看 了,希望也能幫助大家學習哈。python中的裝飾器decorator其實是乙個高階函式,它接受乙個函...
Python 中的裝飾器
1.基本概念 問題 裝飾器是什麼?解答 嚴格來說,裝飾器只是語法糖,裝飾器是可呼叫的物件,可以像常規的可呼叫物件那樣呼叫,特殊的地方是裝飾器的引數是乙個函式 問題 裝飾器有什麼特性?解答 裝飾器有 個特性,一是可以把被裝飾的函式替換成其他函式,二是可以在載入模組時候立即執行 def decorate...
python中的 裝飾器
示例 def fun a arg print a arg fun a deffun b print b 輸出 c python34 python.exe c users administrator desktop test.pyab process finished with exit code 0...