如何在另一个函数中调用多个函数作为参数?

时间:2017-11-04 20:32:59

标签: python python-3.x function args kwargs

我正在努力进行以下练习:

特定函数的参数应作为关键字参数传递给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))

它应该如何工作:  第一个例子  功能签名:  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)  )

如何调用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)

1 个答案:

答案 0 :(得分: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包含使用函数名称作为键的参数列表。看看你是否可以弄清楚如何调用这三种类型的函数。