Как преобразовать строку в имя аргумента и передать его функции? - PullRequest
0 голосов
/ 17 ноября 2018

Итак, у меня есть эта функция

def f(a=1, b=1):
    print("a:", a, "| b:", b)

и этот словарь args = {"a": 4, "b": 5}.Я хочу сделать цикл для вызова f(a=4) в первой итерации и f(b=5) во второй.В общем, что-то вроде этого

for key,value in args.items():
    f(key=value) 

, но каким-то образом key становится аргументом вместо строки.Вывод должен быть:

a: 4 | b: 1
a: 1 | b: 5

но, конечно, я получаю TypeError: f() got an unexpected keyword argument 'key'.

1 Ответ

0 голосов
/ 17 ноября 2018

Я не совсем уверен, что понимаю ваш вопрос, но я думаю, что вы ищете оба варианта использования ** для аргументов ключевых слов.

def f(**kwargs):
    for k, v in kwargs.items():
        f(**{k: v})
...