猿问

python初级问题3

spacer.gif

def count():

    fs = []

    for i in range(1, 4):

        def f(i):

            return lambda : i*i

        fs.append(f(i))

    return fs

f1= count()

print (f1())

这段代码错在哪里

慕无忌0492270
浏览 721回答 1
1回答

pardon110

给你加了注释,希望能明白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
随时随地看视频慕课网APP

相关分类

Python
我要回答