Python中以函数为Lambda参数的代码执行逻辑解析
嵌套Lambda代码解析
先看你给出的代码:
g = lambda a,b: (lambda x,y: a(x)*b(y)) z = g(sum,sum)([1,2,3],[4,5,6]) print(z)
分步拆解执行逻辑
定义
g函数g是一个接收两个参数a和b的Lambda函数,它的返回值是另一个Lambda函数:lambda x,y: a(x)*b(y)。简单说,g的作用是把传入的两个函数a和b打包成一个新函数,这个新函数会接收两个参数x和y,分别用a处理x、b处理y,再把结果相乘。调用
g(sum, sum)
这里把Python内置的sum函数作为参数传给g的a和b。此时g(sum, sum)返回的就是内部的Lambda函数,等价于:
lambda x,y: sum(x) * sum(y)
- 传入列表计算结果
紧接着的([1,2,3],[4,5,6])是给这个内部Lambda传参数:
x为[1,2,3],sum(x)计算得6y为[4,5,6],sum(y)计算得15- 两者相乘得到6*15=90,这就是
z的值,最后print(z)输出90。
等价的普通函数写法
换成普通函数会更直观,逻辑和原Lambda代码完全一致:
def g(a, b): def inner(x, y): return a(x) * b(y) return inner z = g(sum, sum)([1,2,3], [4,5,6]) print(z)
内容的提问来源于stack exchange,提问作者Fareza Aditya
相关产品推荐
相关产品推荐

