0条评论
还没有人评论过~
def foo(): return [lambda x: x+i for i in range(4)] print([x(3) for x in foo()]) # 输出:[6, 6, 6, 6] def foo(): return (lambda x: x+i for i in range(4)) print([x(3) for x in foo()]) # 输出:[3, 4, 5, 6]
1. lambda x: x+i for i in range(4)该如何理解?
2. [x(3) for x in foo()]该如何理解?
3. 为什么输出结果会有如此的不同?
能否详细解释一下,小白万分感谢!
第一个返回的是一个列表,元素都是匿名函数,意思就是已经执行完了for循环,i已成成了3
第二个返回一个generator生成器,循环还没没执行,等你执行的时候,i一个个赋值
应该是这样的
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000