I am going through the excellent Python 3 Metaprogramming tutorial by David Beazley.
In it there is a decorator that looks as follows (slide 50):
from functools import wraps, partial
def debug(func=None, *, prefix=''):
    '''
    Decorator with or without optional arguments
    '''
    if func is None:
        return partial(debug, prefix=prefix)
    msg = prefix + func.__qualname__
    @wraps(func)
    def wrapper(*args, **kwargs):
        print(msg)
        return func(*args, **kwargs)
    return wrapper
In the parameters of the function there is a * that is between the keyword parameter func and prefix. I have tested the decorator with or without the star and in both cases it works.
My question is - what if any, is the purpose of the *?