面试题答案
一键面试1. 闭包实现柯里化的示例
def add(x):
def inner_add(y):
return x + y
return inner_add
add_five = add(5)
result = add_five(3)
print(result)
在上述代码中,add
函数返回了内部函数 inner_add
,内部函数 inner_add
引用了外部函数 add
的变量 x
,这就形成了闭包。add(5)
返回的 add_five
函数就只需要一个参数 y
就能完成加法运算,实现了柯里化。
2. 柯里化的优势
- 提高代码复用性:例如上面
add
函数柯里化后,add_five
这样的函数可以在不同地方复用,专门用于加 5 的操作。如果有多个需要加不同固定值的场景,通过柯里化就可以很方便地生成不同的函数。 - 延迟计算:可以先传递部分参数,等到真正需要结果时再传递其余参数进行计算,这在一些需要根据不同时机获取最终结果的场景中很有用。
3. 闭包在柯里化过程中的具体作用
- 保存状态:闭包使得内部函数能够记住外部函数执行时的状态,如
inner_add
记住了add
函数传入的x
的值。这样在后续调用inner_add
时,不需要再次传入x
,保证了柯里化函数参数的连贯性。 - 实现函数定制:通过闭包,可以根据传入外部函数的不同参数,生成具有不同行为的内部函数。例如
add(5)
和add(10)
会生成不同行为(分别固定加 5 和加 10)的柯里化函数。