Использование произвольного набора именованных аргументов в функциях Python
Иногда программа должна получить произвольное количество аргументов, но мы не знаем заранее, какая информация будет передаваться в функции. В таком случае, можно написать функцию, получающую столько пар «ключ — значение», сколько указано в команде вызова.
В качестве примера, напишем функцию, которая будет приманить имя и фамилию пользователя, а также дополнительные пары «ключ — значение».
Определяем функцию biuld_profile_user(), которая ожидает получения двух обязательных параметров first_name и last_name, а так же дополнительной информации о пользователе в виде пар «ключ — значение». Две звёздочки ** перед параметром user_info заставляют Python создать пустой словарь с именем user_info, и упаковать в него все полученные значения пар «ключ — значение».
Чтобы получить дополнительные значения пар, воспользуемся циклом for в теле функции, и добавим их в словарь profile.
Далее вызываем функцию build_profile_user() и передадим ей имя ‘Иван’ и фамилию ‘Иванов’, и ещё две пары «ключ — значение» email=‘test@internet.ru’, phone=‘88000000000’.
# Определяем функцию def biuld_profile_user(first_name, last_name, **user_info): # Создаём пустой словарь profile = {} # Добавляем имя пользователя в словарь profile['first_name'] = first_name # Добавляем фамилию пользователя в словарь profile['last_name'] = last_name # Добавляем дополнительную информацию о пользователе в словарь for key, value in user_info.items(): profile[key] = value return profile # Вызываем функцию user_profile = biuld_profile_user("Иван", "Иванов", email="test@internet.ru", phone="88000000000") print(user_profile)