python 循环中的闭包引用该如何理解
一个老生常谈的问题了, 但是还是感觉无法特别清晰的理解, 两段代码如下:
l1 = []
for i in range(3):
def func():
return i
l1.append(func)
for f in l1:
print(f())
上面的代码会输出 3 个 2
如果稍微修改, 如下:
l1 = []
for i in range(3):
def func(i=i):
return i
l1.append(func)
for f in l1:
print(f())
上面代码会输出 0, 1, 2
网上的很多教程都是说, 在往l1
中添加func
的时候, func
并没有保存i
的值, 而是当执行f()
的时候才取, 此时i
已经变成了 2, 但是对于第二段代码, 如果i
是以默认参数的形式传递进来, 又该如何解释?
希望可以有前辈指点一二, 不胜感激
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第二段代码,你把一个i改成别的,比如改成j,这样你就理解了吧?