匿名函数问题

v_ae 2018-04-29 03:24:31
l3 = (lambda : x for x in range(5))
方法一打印:
In [693]: l3.__next__()()
Out[693]: 0
In [694]: l3.__next__()()
Out[694]: 1
In [695]: l3.__next__()()
Out[695]: 2
In [696]: l3.__next__()()
Out[696]: 3
In [697]: l3.__next__()()
Out[697]: 4
方法二打印:
In [700]: for i in list(l3):
...: print(i())
...:
4
4
4
4
4

what? 我该怎么理解这两种打印
...全文
1053 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2018-05-02
  • 打赏
  • 举报
回复
第一个是生成器,只有调用next的时候,才会调用lambda 而第二个先转成list了,这个时候,所有的lambda都会生成,以及是同一个4

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧