这是一个curried operator.add函数的正确实现吗?

时间:2012-05-14 12:46:50

标签: python functional-programming

这个blogpost提出了一个curried附加函数的实现:

def addN(n):
    return lambda x: x + n

def plus(a, b):
    addA=addN(a)
    return addA(b)

我相信我的版本更正确,因为它一直使用一元函数。

from operator import add
plus = lambda a: lambda b: add(a, b) 
plus(1)(2)

您怎么看?

1 个答案:

答案 0 :(得分:5)

您的plus功能与博文中的addN功能相同。唯一的区别是:

  1. 您使用了lambda,其中博文使用了def
  2. 出于某种原因,您使用的是operator.add(a,b),而不仅仅是a+b
  3. 使用plusaddN会得到相同的结果,因此两者都不是更“正确”。

    请注意,您选择的功能命名令人困惑,因为您的plus功能对应于博文中的addN功能(而不是plus功能)。