一、裝飾器的形成
import time# print(time.time()) # 獲取當前時間
# time.sleep(10) #讓程式在執行到這個位置的時候停一會兒
#語法糖法一def
func():
time.sleep(0.01)
print('
mr.king')
deftimmer(f): #timmer是裝飾器函式
definner():
start =time.time()
f() #f為被裝飾的函式
end =time.time()
print(end -start)
return
inner
func =timmer(func)
func()#法二
deffunc():
time.sleep(0.01)
print('
mr.king')
deftimmer(f):
start =time.time()
f()end =time.time()
print(end -start)
timmer(func)
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() #
inner()
print(ret)
# 裝飾器的作用 —— 不想修改函式的呼叫方式 但是還想在原來的函式前後新增功能# timmer就是乙個裝飾器函式,只是對乙個函式 有一些裝飾作用
#三、原則:開放封閉原則裝飾帶引數函式的裝飾器
from functools import wraps
def timmer(f): #
裝飾器函式
@wraps(func) #完美的裝飾器
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
'新年好
'@timmer
#語法糖 @裝飾器函式名
def func1(a): #
被裝飾的函式
time.sleep(0.01)
print('
',a)
return
'新年好'#
func = timmer(func)
ret = func(1,2) #
inner()
ret = func(1,b = 2) #
inner()
print(ret)
# 開放 : 對擴充套件是開放的四、裝飾器的固定模式# 封閉 : 對修改是封閉的
裝飾器函式,f是被裝飾的函式
def inner(*args,**kwargs):
'''在被裝飾函式之前要做的事
'''ret = f(*args,**kwargs) #
被裝飾的函式
'''在被裝飾函式之後要做的事
'''return
ret
return
inner
#語法糖 @裝飾器函式名
def func(a,b): #
被裝飾的函式
time.sleep(0.01)
print('
',a,b)
return
'新年好
'qqxing
def inner(*args,**kwargs):
ret = func(*args,**kwargs) #
被裝飾的函式
Python基礎 裝飾器(Day11)
裝飾器 1.裝飾器是在不改變原函式的執行的情況下為原函式增額外的功能。簡單版裝飾器 import time deffunc1 print 執行速度 deftimmer f start time time.time f time.sleep 0.3 end time time.time print 此...
Python學習之路 day 11 裝飾器
一.裝飾器相關 1.什麼是裝飾器 器 指的是具備某一功能的工具 裝飾 指的是為被裝飾器物件新增新功能 裝飾器就是用來為被裝飾器物件新增新功能的工具 注意 裝飾器本身可以是任意可呼叫物件,被裝飾器的物件也可以是任意可呼叫物件 2.為何要用裝飾器 開放封閉原則 封閉指的是對修改封閉,對擴充套件開放 裝飾...
day11 高階函式和裝飾器
引數是函式的函式就是實參高階函式 def func4 f f func1 print f 10,20 2 print func1 10,20 2 def func1 nums return 1,2 func4 func1 系統實參高階函式的應用 普通用法 max min 序列 求序列中元素的最大 小...