def parametrized(decorator):
    """
    Decorator for easily defining parametrized decorators. Should be used like this:

    @parametrized
    def my_decorator(func, *args, **kwargs):
        @wraps
        def _my_decorator(*args_, **kwargs_):
            # At this point args and kwargs are decorator parameters while args_ and kwargs_ are decorated function
            # parameters.
            return func(*args_, **kwargs_)

        return _my_decorator


    @my_decorator("a", "b", "c")
    def my_function(x, y, z):
        pass


    my_function("x", "y", "z")
    """

    def _decorator_maker(*args, **kwargs):
        def _decorator_wrapper(func):
            return decorator(func, *args, **kwargs)

        return _decorator_wrapper

    return _decorator_maker