簡單的裝飾器
def log(f):
def a(*args,**kw): #wrapper
print('call %s()' % f.__name__)
return f(*args,**kw)
return a
#函數聲明,添加裝飾器,注意這裏的log和log()不一樣,與後面的代碼對比着看
@log
def decrator():
print("run decrator")
運行
decrator()
添加text
import functools as ft
#升級版,添加文本
def log(text):
def decorator(f):
@ft.wraps(f)
def wrapper(*args , **kw):
print('%s %s()' % (text . f.__name__))
return f(*args, **kw)
return wrapper
return decorator
#這裏與前面對比,如果是log()那麼會將()中的參數傳給裝飾器第一層,而不是上面的簡單裝飾器直接將函數傳遞給裝飾器
@log('execute')
def de():
print("run de")