Python面试题:实现applyFunctions函数,完成函数嵌套调用
理解并实现
applyFunctions函数 嘿,我完全懂你现在的困惑——这种“返回函数的函数”一开始确实有点绕,不过拆解开逻辑就很清晰了!
首先,咱们明确一下applyFunctions的核心作用:它是一个函数组合工具,接收两个函数(外层outer_function和内层inner_function),然后返回一个新的函数。这个新函数才是真正用来接收你的业务参数(比如测试用例里的3)的,它会先让内层函数处理参数,再把内层的结果传给外层函数执行。
基础实现(单参数场景)
先从最贴合你测试用例的版本开始,用def定义的方式最直观:
def applyFunctions(outer_function, inner_function): # 定义一个内部函数,它负责接收后续传入的参数 def composed(x): # 核心逻辑:先执行inner_function处理x,再把结果给outer_function return outer_function(inner_function(x)) # 返回这个内部函数,让它在外部等待参数传入 return composed
咱们用你的测试用例验证一下:
add2 = lambda x: x + 2 times2 = lambda x: x * 2 # 先调用applyFunctions得到组合后的函数,再传入参数3 result = applyFunctions(add2, times2)(3) print(result) # 输出8,和预期一致
这里的执行流程是:applyFunctions(add2, times2)返回了composed函数,然后composed(3)会先算times2(3)=6,再算add2(6)=8,完美匹配需求。
如果想用更简洁的lambda写法,也可以直接返回一个匿名函数:
def applyFunctions(outer_function, inner_function): return lambda x: outer_function(inner_function(x))
这个版本和上面的def实现功能完全一样,只是更紧凑。
扩展:支持多参数的函数
如果你的内层或外层函数需要接收多个参数,咱们可以把返回的函数改成支持可变参数的形式,这样适用性更广:
def applyFunctions(outer_function, inner_function): def composed(*args, **kwargs): # *args接收位置参数,**kwargs接收关键字参数 inner_result = inner_function(*args, **kwargs) return outer_function(inner_result) return composed
比如测试多参数场景:
sum_two = lambda a, b: a + b double = lambda num: num * 2 # 组合后传入两个参数 result = applyFunctions(double, sum_two)(1, 2) print(result) # 输出6,即(1+2)*2=6
这样不管你的函数是单参数还是多参数,这个版本的applyFunctions都能处理啦!
内容的提问来源于stack exchange,提问作者Alex Helvaty
相关产品推荐
相关产品推荐

