У меня есть словарь vars = {'a' : 1, 'b' : 2}
с парами ключ / значение. В будущем этот словарь может быть расширен новыми переменными. Я хотел бы вызвать func1 с переменными из vars dict. В func1 я буду использовать ноль или более переменных из vars dict. Если func1 должен вызывать func2, я бы хотел, чтобы func2 получал все переменные из исходной vars dict. Func2 будет использовать ноль или более переменных из vars dict.
Примерно так:
def func1(**kwargs):
print(f'func1 a = {a}, b is not important')
return func2(**kwargs)
def func2(**kwargs):
return f'func2 a = {a}, b = {b}, both variables are important'
vars = {'a' : 1, 'b' : 2}
print(func1(**vars))
Но это не работает, потому что kwargs - словарь. Я могу распаковать переменные в начале функции, если необходимо, как:
a = kwargs['a']
b = kwargs['b']
, но если новая переменная «c» появится в исходном словаре vars, мне придется изменить эти распаковки в начале каждой функции. Я также мог бы установить параметры def func1(a, b):
и def func2(a, b):
, но мне нужно воссоздать kwargs dict, чтобы отправить его дальше. Опять же, если появится новая переменная «c», мне придется изменить сигнатуру каждой функции. Я также мог бы определить func1, как показано ниже, чтобы передать переменную ниже:
def func1(a, kwargs):
print(f'func1 a = {a}, b is not important')
kwargs['a'] = a
return func2(**kwargs)
Возможно, чтобы создать объект и установить его свойства как пары ключ / значение vars dict, а затем отправить этот объект как параметр функции ?
Как наиболее элегантно передавать произвольные переменные от функции к функции в этом сценарии?
С уважением.