柯里化
指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。
z = f(x, y) 转换成 z = f(x)(y)的形式。
def add(x, y):
return x + y
原来函数调用为add(4, 5) ,柯里化目标是add(4)(5) 。如何实现?
每一次括号说明是函数调用,说明add(4)(5) 是2次函数调用。
add(4)(5)
等价于
t = add(4)
t(5)
也就是说add(4)应该返回函数。
def add(x):
def _add(y):
return x + y
return _add
add(100, 200)
通过嵌套函数就可以把函数转成柯里化函数。
举例
def add(x):
def add1(y, z):
return x + y + z
return add1
add(4)(5, 6)
def add(x, y):
def add2(z):
return x + y + z
return add2
add(4, 5)(6)
def add(x):
def add1(y):
def add2(z):
return x + y + z
return add2
return add1
add(4)(5)(6)