在 Python 函数中,参数中的独立 * 是什么意思

In Python functions what does a stand alone * in the parameters mean

我正在经历精彩的Python 3 Metaprogramming tutorial by David Beazley

其中有一个装饰器,如下所示(幻灯片 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

在函数的参数中,关键字参数funcprefix之间有一个*。我已经测试了带星号或不带星号的装饰器,在这两种情况下它都能正常工作。

我的问题是 - 如果有的话,* 的目的是什么?

它标志着只能按位置提供的参数的结束。 * 之后的参数必须指定为关键字参数。有关详细信息,请参阅 the PEP