Skip to the content.

Create Function Decorator With Required Arguments

Solution

from functools import wraps


def decorator(arg1=None, arg2=None, *_args, **_kwargs):
    def _decorator(_func):
        @wraps(_func)
        def wrapper(*args, **kwargs):
            """wrapper function."""
            print(f'run wrapper: {arg1}, {arg2}, {_args}, {_kwargs}')
            return _func(*args, **kwargs)
        return wrapper
    return _decorator

Usage

@decorator(1, 2)
def func(*args, **kwargs):
    """original function."""
    print(f'run func: {args}, {kwargs}')

References