摘要:因此,通过局部套用,可以将一个函数转换为多个单参数函数。它对于代码的可重用性和函数式编程非常有用。事实上,将其添加到 python 语言中的提案(PEP 309,被拒绝)来自我们的函数式编程大师 Haskell。Haskell 和 ML 等语言中的函数应用程序
柯里化是指不是一次给函数所有参数,而是一个一个地给它们。因此,它为每个参数创建了一个新函数。让看一下 python 中的快速手动实现
def add_curried(x): def inner(y): return x + y return inner# Usageadd_five = add_curried(5) # Now adds 5 to any numberresult = add_five(3) # result will be 8因此,通过局部套用,可以将一个函数转换为多个单参数函数。它对于代码的可重用性和函数式编程非常有用。事实上,将其添加到 python 语言中的提案(PEP 309,被拒绝)来自我们的函数式编程大师 Haskell。Haskell 和 ML 等语言中的函数应用程序的工作原理是,函数调用:
f x y z实际上意味着:
(((f x) y) z)因此,虽然这个实现被拒绝了,但仍然可以通过一些方法在 python 中实现它。您看到了上面的手动实现,其他实现方式是使用 lambda 函数、装饰器和functools.partial 函数。带有 partial 的相同示例如下所示:
from functools import partialdef add(x, y): return x + yadd_five = partial(add, 5) result = add_five(3)这在现实世界中很有用,您可以在其中创建一个函数来修复一些参数 (level),同时仍然允许动态输入 (message),同时自动添加时间戳。
但请记住,这不是递归(是的,我想到了它)。递归是指函数直接或间接地调用自身。而局部套用会创建一个函数链。
来源:自由坦荡的湖泊AI
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!