我有一个函数列表及其参数如下:
(func1, *arg1), (func2, *arg2),...
我想将它们传递给另一个函数来执行它们:
for func, arg* in (list of funcs, args):
func(arg*)
如何在python中执行此操作?我尝试了几个,但它不同时解包和* arg。
答案 0 :(得分:3)
您可以使用*-operator to unpack the arguments out of the tuple。
例如,假设调用列表中的项目格式为Invalid parameter number: parameter was not defined
。换句话说,(function,arg1,arg2,...)
是您的函数,而item[0]
是应该赋予函数的参数。
item[1:]
答案 1 :(得分:0)
你可以这样做,只需使用元组列表,其中first是函数名,rest是参数。
def a(*args,**kwargs):
print 1
list_f = [(a,1,2,3)]
for f in list_f:
f[0](f[1:])
答案 2 :(得分:0)
假设你的函数和参数在元组中是分开的,
def squarer(*args):
return map(lambda x: x*2, args)
def subtracter(*args):
return map(lambda x: x-1, args)
funcAndArgs = [(squarer, [1,2,3,4]), (subtracter, [1,2,3,4])]
for func, args in funcAndArgs:
print func(*args)
输出:
[2, 4, 6, 8]
[0, 1, 2, 3]