Create Function Decorator With Optional Arguments
Solution
from functools import wraps, partial
def decorator(func=None, *, arg1=None, arg2=None):
if func is None:
return partial(decorator, arg1=arg1, arg2=arg2)
@wraps(func)
def wrapper(*args, **kwargs):
"""wrapper function."""
print(f'run wrapper: {args}, {kwargs}')
return func(*args, **kwargs)
return wrapper
Usage
@decorator(1, 2)
def func(*args, **kwargs):
"""original function."""
print('run func')