2024-04-27 23:37:25 发布
网友
有人能做精神检查吗?
我正在尝试使函数循环。 下面的代码总结了我无法理解的一点:
f_list = [] for i in range(10): f = lambda j : i f_list.append(f)
那么
>>> f_list[0](0) 9 #I hope this is 0. >>> f_list[1](0) 9 #I hope this is 1.
为什么会这样??
编辑:Stackoverflow,here中已经讨论了几乎相同的问题。
这是因为python的closure属性。为了得到你真正需要的,你需要这样做
f = lambda j, i = i : i
所以,这个程序的输出是这样的
f_list = [] for i in range(5): f = lambda j, i = i : i f_list.append(f) for i in range(5): print f_list[i](0)
输出
0 1 2 3 4
编辑:Stackoverflow,here中已经讨论了几乎相同的问题。
这是因为python的closure属性。为了得到你真正需要的,你需要这样做
所以,这个程序的输出是这样的
输出
相关问题 更多 >
编程相关推荐