это именно то, что я пытался достичь. Я добавил дополнительный оператор if, чтобы проверить, является ли kwarg целым числом или кортежем. Спасибо, что не обязательно помещать все ** kwargs в кортеж. Спасибо ребята за помощь!
я есть типы дерева подфункций:
один без каких-либо параметров (аргументов),второй с одним параметромтретий с несколькими параметрами (кортеж)Я пытаюсь передать эти функции и их аргументы другой функции, которая суммирует результаты всех подфункций и возвращает значение суммы. Параметрами в этой функции должны быть: имена каждой подфункции в качестве аргументов позиции (* args) и аргументы каждой подфункции в качестве аргументов значения ключа (* kvargs).
пример:
def no_arg()
def one_arg(a)
def multiple_args(a, b, c, e, f)
# execution of function_results_sum:
function_results_sum(
no_arg, one_arg, multiple_args,
one_arg=23,
multiple_args=(1, 2, 3, 4, 5))
Что я сделал до сих пор:
def no_arg():
return 5
def ident(x):
return x
def mult(x, y):
return x * y
def function_results_sum(*args, **kwargs):
return no_arg() + ident(kwargs[ident.__name__]) + mult(*kwargs[mult.__name__])
Код выше передает аргументы каждой подфункции, ноимена подфункций жестко закодированы, Я хотел бы изменить текущий код, чтобы иметь возможность получать имена функций из * args. Ниже я написал псевдокод, выражающий более менее то, что я пытаюсь достичь:
def function_results_sum(*args, **kwargs):
for functionName in args:
result = sum(funcionName(kwargs))
return result
Я уже целый день боролся с этой проблемой, поэтому, пожалуйста, не пишите мне это"Использование Google не повредит" ;)