Зачем * в аргументе функции namedtuple?
Копаюсь под капотом у 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
В связи с этим вопрос - зачем нужна эта звезда в аргументах функции?
Источник: Stack Overflow на русском