作用: 在代码运行期间动态增加功能
1.无参
import functools #不改变被装饰函数的函数名
def log(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
#装饰器调用
@log
def time():
print('2020-03-25')
2.有参
import functools
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator
#装饰器调用
@log('execute')
def time():
print('2020-03-25')