Как вызвать несколько функций в качестве аргументов внутри другой функции?

Я борюсь со следующим упражнением:

Аргументы для определенных функций должны передаваться в function_results_sum как аргументы ключевых слов, и это должно выглядеть так: FUNCTION_NAME=ARGUMENTS.

Функция function_results_sum должна возвращать сумму всех результатов, полученных после запуска каждой переданной функции с аргументами.

Если у функции нет аргументов, аргументы не должны передаваться в function_results_sum

Если функция принимает 1 аргумент, в качестве аргумента ключевого слова int будет передано в function_results_sum (например, one_arg_function_name=2)

Если функция принимает более 1 аргумента - ожидается передача кортежа (например, two_args_function_name=(1, 2))

Как это должно работать: 1-й пример сигнатуры функций: def no_arg() def one_arg(a) def multiple_args(a, b, c, e, f)

вызов function_results_sum: function_results_sum(no_arg, one_arg,multiple_args, one_arg=23,multiple_args=(1, 2, 3, 4, 5))

2-й пример вызова function_results_sum: function_results_sum(no_arg, one_arg, multiple_args, one_arg=-1245, multiple_args=(45, 65, 76, 123456, 111.222))

! Используйте атрибут name в объекте функции!

Это то, что я придумал, однако я не знаю, почему я получаю результат в виде адресов ячеек, где хранятся выходные данные:

Вывод консоли:

<function ident at 0x00000288C0A72048> <function no_arg at 
0x00000288C0A6BF28> 
<function mult at 0x00000288C0A720D0>

Моя реализация:

def function_results_sum(*args, **kwargs):
    return [*args]
def no_arg():
    return 5
def ident(x):
    return x
def mult(x, y):
    return x * y
a = function_results_sum(ident, no_arg, mult, ident = 2, mult = (2, 3))
print(a)

person Coprobo    schedule 04.11.2017    source источник


Ответы (1)


Вот подсказка, которая вызывает функцию с одним аргументом:

def function_results_sum(*args, **kwargs):
    func = args[0]
    function_name = func.__name__
    parameter = kwargs[function_name]
    return func(parameter)

def ident(x):
    return x

a = function_results_sum(ident,ident=2)
print(a)

args будет содержать список вызываемых функций, а kwargs содержит список параметров, использующих имена функций в качестве ключей. Посмотрите, сможете ли вы понять, как вызывать три типа функций.

person Mark Tolonen    schedule 04.11.2017