首页 > 编程语言 > 详细

Python lambda简单讲解

时间:2021-04-06 12:15:32      阅读:14      评论:0      收藏:0      [点我收藏+]
在与pythoner进行沟通的时候,经常听到别人说,总会遇到这种的面试题目:
def multipliers():
    return [lambda x : i*x for i in range(4)]


print ([m(2) for m in multipliers()] )
"""
[6, 6, 6, 6]
"""

面试官就会问,给我讲解一下为什么最后得到的结果是4个6吗?如果不结合lamdb的特性以及当前使用的场景来解释,估计也解释的不清楚.

那就来简单解释一下,lamdba 在python中的定位就是匿名函数,而且它是延迟绑定的.只有真正去运行函数的时候,对应的值就会发生改变.

拿我们遇到的这个例子来说, lambda 要等到for i in range(4)运行完成的时候,再去执行i * x.这个时候i的值就会直接变成3,最后的结果就是变成4个6.所以想正常的得到0,2,4,6.就必须把上面的函数修改成如下:

def multipliers():
    return [lambda x, i=i: i * x for i in range(4)]

 

Python lambda简单讲解

原文:https://www.cnblogs.com/L-O-N/p/14620257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!