在目標(biāo)函數(shù)前后添加功能,但又不修改目標(biāo)函數(shù)的定義,這種在代碼運(yùn)行期間動態(tài)增加功能的方式,稱之為“裝飾器”(Decorator)
import functools
# 無參數(shù)的裝飾器
def log(func):
# 不改變目標(biāo)函數(shù)名稱__name__
@functools.wraps(func)
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
# 使用方法
@log
def now():
print("2022-06-01")
import functools
# 帶參數(shù)的裝飾器
def log(text):
def decorator(func):
# 不改變目標(biāo)函數(shù)名稱__name__
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator
# 使用方法
@log('execute')
def now():
print('2015-3-25')