Передача выбранных аргументов из словаря в функцию - PullRequest
1 голос
/ 19 июня 2019

Учитывая набор функций, которые отличаются по своим сигнатурам, и словарь, содержащий пары (ключ, значение) для каждого из необходимых аргументов, я хочу найти элегантный способ передачи словаря каждой функции, чтобы каждая функцияможет использовать параметры требуемой функции.

def first_function(name, age):
    print(name, " ", age)

def second_function(name, gender):
    print(name, " ", gender)

param_dict = {'name': 'Max', 'age': 23, 'gender':'m'}

Передача функции param_dict с указанием second_function(**param_dict) выдает ошибку, поскольку ни одна из функций не требуется для всех трех параметров.Есть ли элегантное решение, такое, что каждая функция «извлекает» требуемые параметры?

1 Ответ

6 голосов
/ 19 июня 2019

Вы можете просто передать **kwargs в качестве третьего аргумента, чтобы обойти эту проблему, так как он будет потреблять то, что ему нужно, из словаря, остальное останется собранным в

dict: *1003*
def first_function(name, age, **kwargs):
    print(name, age)

def second_function(name, gender, **kwargs):
    print(name, gender)

param_dict = {'name': 'Max', 'age': 23, 'gender':'m'}

first_function(**param_dict)
# Max 23

second_function(**param_dict)
# Max m
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...