如何将函数的输出传递给不同的函数作为输入?

时间:2015-09-21 20:30:28

标签: python function parameters

我正在尝试编写一个函数,它将函数列表和第一个参数作为参数。然后它按顺序调用它们,将前一个的输出传递给下一个。 (显然,为了使其工作,所有函数必须具有相同数量的参数并返回相同数量的值。)

这是我试过的:

def chain(functions, *first_func_params):
    params = first_func_params
    for func in functions:
        params = func(*params)

但是,只有当所有函数都返回元组('多个值')或其他序列类型时才会起作用,因为只有序列类型可以解压缩到函数的参数列表中。

如果函数只返回单个值,chain不起作用。

可以简单地检查func的输出是否为元组并相应地采取行动。但是有更优雅的解决方案吗?

你会如何实现这个?

1 个答案:

答案 0 :(得分:1)

您可以使用:

if not isinstance(params, tuple):
    params = (params,)

或者,如果您尝试在可解包对象之前使用TypeError,则会捕获将引发的*异常。