将多个函数组合到一个函数上,每个函数在一个特定的关键字上

2024-05-23 21:07:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个功能:

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之上组合incrementdecrement,得到一个具有新结构签名的函数。请注意,我还不想运行结果函数(lazy composition)

toolz.compose需要组合函数的一个输入/输出,而functools.partialtoolz.curry无法将函数作为参数(它们将其视为一个值)时,我该怎么做呢

基本上,我在寻找高阶版本的部分/咖喱

编辑: 我不能使用lambda,因为我希望新函数具有intfloat的签名,并且我希望能够使用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: floaty: int并返回int的函数


Tags: 函数new参数returndefk2k1关键字
1条回答
网友
1楼 · 发布于 2024-05-23 21:07:45

使用lambda函数怎么样

ask_and_add = lambda : addition(get_input(),get_input())

您可以在需要时随时调用它:

ask_and_add()

系统将提示您输入两个连续的输入,然后您将得到总和

相关问题 更多 >