我正在尝试编写一个函数,该函数获取函数列表作为参数,以及第一个函数的参数。然后它按顺序调用它们,将前一个的输出传递到下一个。 (显然,要使其工作,所有函数都必须期望相同数量的参数并返回相同数量的值)。
这是我尝试过的:
def chain(functions, *first_func_params):
params = first_func_params
for func in functions:
params = func(*params)
但是,只有当所有函数返回元组(“多个值”)或其他序列类型时,这才有效,因为只有序列类型可以解包到函数的参数列表中。
如果函数仅返回单个值,chain
不起作用。
我可以简单地检查func
的输出是否是一个元组并采取相应的行动。但有更优雅的解决方案吗?
你会如何实现这个?
最佳答案
您可以使用:
if not isinstance(params, tuple):
params = (params,)
或者捕获如果您尝试在可解压对象之前使用 *
则会引发的 TypeError
异常。
关于python - 如何将一个函数的输出作为输入传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32704042/