简单的装饰器
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")