如何传递函数列表及其所有参数在python中的另一个函数中执行?

时间:2016-09-22 13:59:03

标签: python

我有一个函数列表及其参数如下:

(func1, *arg1), (func2, *arg2),...

我想将它们传递给另一个函数来执行它们:

for func, arg* in (list of funcs, args):
   func(arg*)

如何在python中执行此操作?我尝试了几个,但它不同时解包和* arg。

3 个答案:

答案 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]