В функциях Python что означает автономный * в параметрах

Я изучаю отличный учебник Метапрограммирование Python 3 от Дэвид Бизли.

В нем есть декоратор, который выглядит следующим образом (слайд 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

В параметрах функции есть *, который находится между параметрами ключевого слова func и prefix. Я протестировал декоратор со звездой или без нее, и в обоих случаях он работает.

Мой вопрос: что, если таковые имеются, является целью *?


person Ama Aje My Fren    schedule 01.11.2019    source источник


Ответы (1)


Он отмечает конец параметров, которые могут быть предоставлены только по положению. Аргументы, следующие за *, должны быть указаны как аргументы ключевого слова. См. PEP для получения дополнительной информации.

person Chathan Driehuys    schedule 01.11.2019