def count(): fs = [] for i in range(1, 4): def f(i): return lambda : i*i fs.append(f(i)) return fsf1= count()print (f1())这段代码错在哪里
1 回答
pardon110
TA贡献1038条经验 获得超227个赞
给你加了注释,希望能明白
def count(): fs = [] for i in range(1,4): def f(i): # 形成一个闭包,与swift的->,js的=>箭头函数,java8匿名函数概念一样 # 返回一个无参的匿名函数,但该函数持有父层函数的自由变量当前i值 return lambda : i*i fs.append(f(i)) # fs列表元的每个元素是一个绑定当前循环变量的函数 return fs f1=count() # f1仅仅只是列表,它的元素可以被调用 for fn in f1: print(fn()) # 1,4,9
添加回答
举报
0/150
提交
取消