我有三个功能:
def addition(a: int, b: int):
return a + b
def increment(x: float) -> int:
return int(x) + 1
def decrement(y: int) -> int:
return x - 1
我想在addition
之上组合increment
和decrement
,得到一个具有新结构签名的函数。请注意,我还不想运行结果函数(lazy composition)
当toolz.compose
需要组合函数的一个输入/输出,而functools.partial
或toolz.curry
无法将函数作为参数(它们将其视为一个值)时,我该怎么做呢
基本上,我在寻找高阶版本的部分/咖喱
编辑:
我不能使用lambda,因为我希望新函数具有int
和float
的签名,并且我希望能够使用inspect.signature
从结果函数中获取此签名
给定函数a,b和c,以及某些关键字k1和k2,我想把a,b连接在c的上面,在关键字k1和k2上,得到一个签名为a的参数与b的参数串联的函数
如果我们坚持上面的例子,我想要:
new_func = pipeline(addition, via("a"), increment, via("b") decrement)
其中via
将函数组合到迄今为止管道的未绑定关键字上
结果new_func
将是一个需要两个变量x: float
和y: int
并返回int
的函数
使用lambda函数怎么样
您可以在需要时随时调用它:
系统将提示您输入两个连续的输入,然后您将得到总和
相关问题 更多 >
编程相关推荐