同时支持有参数和无参数的装饰器
Topic sourcedef log(value=None):
if hasattr(value, '__call__'):
def decorator(*args, **kwargs):
print(f"无参数装饰器调用{value.__name__}", args, kwargs)
return value(*args, **kwargs)
else:
def decorator(fn):
def wrapper(*args, **kwargs):
print(f"用装饰器参数'{value}'调用{fn.__name__}", args, kwargs)
return fn(*args, **kwargs)
return wrapper
return decorator
@log
def test(name):
print(f"hello {name}")
test("张三")
- 1
蘑菇蘑菇