裝飾器形成的過程 : 最簡單的裝飾器 有返回值的 有乙個引數 萬能引數
裝飾器的作用
原則 :開放封閉原則
語法糖 :@
裝飾器的固定模式
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
def inner(*args,**kwargs):
ret = func(*args,**kwargs) #被裝飾的函式
return ret
return inner
def qqxing():
print(123)
ret = qqxing() #inner
python基礎 裝飾器
裝飾器本質就是函式,功能是為其他函式新增附加功能。原則 不修改被修飾函式的源 不修改被修飾函式的呼叫方式 裝飾器的知識儲備 裝飾器 高階函式 函式巢狀 閉包 import time 定義乙個裝飾器計算函式執行時間 def timer func start time time.time res fun...
Python基礎 裝飾器
裝飾器是程式開發中經常會用到的乙個功能,程式開發的基礎知識,用好了裝飾器,開發效率如虎添翼,所以這也是python面試中必問的問題,但對於好多初次接觸這個知識的人來講,這個功能有點繞,這個都不會,別跟人家說你會python,看了下面的文章,保證你學會裝飾器。裝飾器 decorator 首先我們需要知...
python基礎 裝飾器
一 裝飾器定義 器即函式 裝飾即修飾,意指為其他函式新增新功能 裝飾器定義 本質就是函式,功能是為其他函式新增新功能 二 裝飾器需遵循的原則 1.不修改被裝飾函式的源 開放封閉原則 2.為被裝飾函式新增新功能後,不修改被修飾函式的呼叫方式 三 實現裝飾器知識儲備 裝飾器 高階函式 函式巢狀 閉包 四...