采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
l = [lambda x=x:id(x) for x in range(10)]for i in l:
print(isinstance(i, Iterable))
print(i())
如果去掉x=x默认参数则引用同一个变量,请问这是为什么?网上说法是惰性求值,但惰性求值意味着他是一个生成器,但l并不是生成器里面的元素只是个普通函数?
根据你这提问的问题来说 首先lambda表达式是匿名函数 他说为了解决一些功能很小又不值当单独写一个函数来命名,本身起到的作用就是函数速写,他里面的表达式可以是任何跟惰性求值没有关系,惰性求值是在进行循环遍历的时候在开始,在此之前也可以不存在,因为你用的是range函数 在python2中他是直接返回列表 python3中将Python2中的xrange生成器变成了python3的range
那为什么去掉x=x默认参数,结果输出全是9,而加上默认参数输出0-9?
加上x=x默认参数则应用不同变量?
登录后可查看更多问答,登录/注册
socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO
1.3k 31
1.2k 24
1.2k 16
1.5k 10
1.2k 9
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号