Python Lambda表达式可视化求助:转def函数并解析执行过程
转写为def函数版本
把原代码中的所有lambda表达式转换为普通def定义的函数,等价代码如下:
# 对应原代码中的 lambda x: lambda y: x def pick_first(x): def inner(y): return x return inner # 对应原代码中的 lambda z: z * 2 def double(z): return z * 2 # 对应原代码中的 lambda x, y: lambda z: (x)(y)(z) def f(x, y): def apply_chain(z): return x(y)(z) return apply_chain # 原调用语句的等价写法 print(f(pick_first, double)(3)(4))
执行过程拆解
我们一步步拆解整个调用的逻辑:
- 第一步调用
f(pick_first, double):给函数f传入两个参数,x绑定为pick_first函数,y绑定为double函数;f返回内部定义的apply_chain函数,这个函数已经记住了x和y的绑定关系。 - 第二步调用
apply_chain(3):进入apply_chain函数,执行x(y)(z),也就是pick_first(double)(3)。先执行pick_first(double):pick_first接收参数x=double,返回它的inner函数,这个inner函数的逻辑是无论传入什么参数,都返回之前传入的x(也就是double函数)。这一步结束后得到一个会返回double函数的新函数。 - 第三步调用这个新函数并传入4:也就是执行
double(4),计算4*2=8,最终输出结果8。
内容的提问来源于stack exchange,提问作者Ledlin
相关产品推荐
相关产品推荐

