Я пытаюсь реализовать функцию с 2 аргументами и дополнительным аргументом 3-го произвольного ключевого слова, используя форматирование **kwarg
, как показано ниже:
def build_profile(first_name, last_name, **additional_info):
""" Building a user profile """
profile = {}
profile['First name'] = first_name
profile['Last name'] = last_name
for key, value in additional_info.items():
profile[key.title()] = value.title()
return profile
build_profile("x", 'y', 'x', 'y', 'x', 'y')
Однако это приводит к ошибке:
TypeError: build_profile() takes 2 positional arguments but 6 were given
Мне удалось воспроизвести эту ошибку изолированно, используя следующий код:
def x(**y):
print(y)
Вывод:
x(1,2,3,4,5)
Это генерирует тот же ответ:
TypeError: x() takes 0 positional arguments but 1 was given
Это привело меня к выводу, что у меня либо:
- Проблема с моей конфигурацией Python (работает 3.6.4 в Spyder), либо
- Я что-то упускаю ослепительноочевидно.