python基礎 裝飾器

2021-09-02 18:44:00 字數 2004 閱讀 6528

裝飾器形成的過程 : 最簡單的裝飾器 有返回值的 有乙個引數 萬能引數

裝飾器的作用

原則 :開放封閉原則

語法糖 :@

裝飾器的固定模式

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.為被裝飾函式新增新功能後,不修改被修飾函式的呼叫方式 三 實現裝飾器知識儲備 裝飾器 高階函式 函式巢狀 閉包 四...