我正在努力进行以下练习:
特定函数的参数应作为关键字参数传递给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)
答案 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
包含使用函数名称作为键的参数列表。看看你是否可以弄清楚如何调用这三种类型的函数。