裝飾器基礎概念見python裝飾器
裝飾器的作用:在不修改原函數的情況下,動態爲函數增加某些功能
裝飾器的本質:裝飾器其實就是返回函數的高階函數
Exp:
def decorator(func):
return 'study'
@decorator
def func():
return 'stupid'
本來func函數返回值是stupid,但是經過@符號,相當於進行了賦值操作,將study賦值給func,這個時候func不再是個函數,而是個字符串。
裝飾器就是將decorator不再返回字符串,而是返回一個函數:
def decorator2(func):
def wrapper():
print('whatever')
f = func()
return f
return wrapper
此時func指向的不再是原來只打印stupid的函數了,而是一個新函數wrapper,這個新函數會先執行print('whatever'),再執行func裏的操作
常用場景:異常處理,時間統計