我需要编写一个名为“concat”的 python 函数,它将任意两个函数作为输入,并返回一个函数,该函数是两个输入函数的串联函数(即它接受 f1 和 f2,并返回 f1◦f2 ).
我试过这个:
def concat(f1,f2):
return f1(f2)
例如,如果 f1 和 f2 是:
def f1(x):
return x+2
def f2(x):
return x*2
然后,concat(f1,f2) 应该返回:(x*2)+2
我希望能够像这样使用它:
a = concat(f1,f2)
a(5)
但是我得到一个错误:
TypeError: + 不支持的操作数类型: 'function' 和 'int'
我知道我可以这样定义函数:
def concat(f1,f2,x):
return f1(f2(x))
但这不是我想要的;我希望能够创建 concat 函数的实例,然后可以用任何 x 调用它。
最佳答案
您需要返回一个新的“包装器”函数。一种选择是使用 lambda
表达式:
def concat(f1, f2):
return lambda x: f1(f2(x))
文档: https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions
关于接受两个函数并返回串联函数的 Python 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65531057/