函数调用函数

Function calling functions

创建一个将任意数量的函数作为位置参数的函数。函数 returns 一个一个地执行函数参数。请参阅示例以便更好地理解(我们将此函数称为 chain)。

my_func = chain(lambda x: x + 2, lambda x: (x/4, x//4))
my_func(37)

应该return

(9.75, 9)

我尝试做类似的事情:

def chain(x,*args):
    for arg in args:
        arg(x)

它不起作用。无法理解如何将非函数参数传递给此函数(在上面的示例 37 中)。

您是否正在寻找这样的东西:

def chain(*funcs):
    def chained(*args, **kwargs):
        return tuple(func(*args, **kwargs) for func in funcs)
    return chained

my_func = chain(lambda x: x + 2, lambda x: (x/4, x//4))
print(my_func(37))

输出:

(39, (9.25, 9))