Зачем * в аргументе функции namedtuple?

Рейтинг: 0Ответов: 0Опубликовано: 23.03.2023

Копаюсь под капотом у namedtuple. Обнаружил, что он принимает следующие аргументы:

def namedtuple(typename, field_names, *, rename=False, defaults=None, module=None):

Ко всем аргументам есть документация и вопросов особо не возникает, но есть вопрос по поводу звезды (3 аргумент)
Я изначально подумал, что это для защиты от передачи лишних аргументов (если по позиции передать больше, чем 2, то лишнее соберётся в лист-урну) или что-то такое

Но когда я попробовал вызвать

Car = namedtuple('Авто', "color age", 'Странный аргумент', rename=True)

Всё равно выдаёт ошибку о лишних аргументах

Car = namedtuple('Авто', "color age", 'Странный аргумент', rename=True)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: namedtuple() takes 2 positional arguments but 3 positional arguments (and 1 keyword-only argument) were given

В связи с этим вопрос - зачем нужна эта звезда в аргументах функции?

Ответы

Ответов пока нет.