lambda表达式是否是惰性求值?
来源:1-2 开发环境配置

时间流逝unity
2018-06-17
l = [lambda x=x:id(x) for x in range(10)]
for i in l:
print(isinstance(i, Iterable))
print(i())
如果去掉x=x默认参数则引用同一个变量,请问这是为什么?网上说法是惰性求值,但惰性求值意味着他是一个生成器,但l并不是生成器里面的元素只是个普通函数?
写回答
2回答
-
Ethreal
2018-06-18
根据你这提问的问题来说 首先lambda表达式是匿名函数 他说为了解决一些功能很小又不值当单独写一个函数来命名,本身起到的作用就是函数速写,他里面的表达式可以是任何跟惰性求值没有关系,惰性求值是在进行循环遍历的时候在开始,在此之前也可以不存在,因为你用的是range函数 在python2中他是直接返回列表 python3中将Python2中的xrange生成器变成了python3的range
012018-06-18 -
时间流逝unity
提问者
2018-06-17
加上x=x默认参数则应用不同变量?
00
相似问题