关于Python高阶函数apply_twice输出为20的逻辑疑问
为什么这段Python代码的输出是20?
先来看你给出的原代码:
def apply_twice(func, arg): return func(func(arg)) def add_five(x): return x + 5 print(apply_twice(add_five, 10))
嘿,我发现你梳理执行流程的时候最后一步出错啦!咱们来一步步拆解正确的逻辑,就能明白为什么输出是20了:
- 第一步:调用
apply_twice(add_five, 10),此时函数里的func就是add_five,arg是数值10。 - 第二步:执行
return func(func(arg)),咱们得从内到外计算:- 先算最内层的
func(arg),也就是add_five(10),按照add_five的逻辑,返回10 + 5 = 15。 - 接下来把这个15作为参数传给外层的
func,也就是调用add_five(15),这时候返回的是15 + 5 = 20。
- 先算最内层的
- 第三步:
apply_twice最终返回这个20,所以print语句输出的就是20。
你之前的流程里最后一步写成了 return (20 + 5),这里的问题是把第一次调用的结果搞错啦——第一次调用add_five(10)得到的是15,不是20,所以第二次调用是给15加5,而不是20加5~
内容的提问来源于stack exchange,提问作者Surya
相关产品推荐
相关产品推荐

