请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

lambda表达式是否是惰性求值?

l = [lambda x=x:id(x) for x in range(10)]
for i in l:

   print(isinstance(i, Iterable))

   print(i())

如果去掉x=x默认参数则引用同一个变量,请问这是为什么?网上说法是惰性求值,但惰性求值意味着他是一个生成器,但l并不是生成器里面的元素只是个普通函数?

正在回答 回答被采纳积分+3

插入代码

2回答

Ethreal 2018-06-18 11:45:49

根据你这提问的问题来说 首先lambda表达式是匿名函数 他说为了解决一些功能很小又不值当单独写一个函数来命名,本身起到的作用就是函数速写,他里面的表达式可以是任何跟惰性求值没有关系,惰性求值是在进行循环遍历的时候在开始,在此之前也可以不存在,因为你用的是range函数 在python2中他是直接返回列表 python3中将Python2中的xrange生成器变成了python3的range 

0 回复 有任何疑惑可以回复我~
  • 提问者 时间流逝unity #1
    那为什么去掉x=x默认参数,结果输出全是9,而加上默认参数输出0-9?
    回复 有任何疑惑可以回复我~ 2018-06-18 20:17:24
提问者 时间流逝unity 2018-06-17 21:08:22

加上x=x默认参数则应用不同变量?

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号