Discuss / Python / 这么理解可以么?

这么理解可以么?

Topic source
def count():
    fs = []
    for i in range(1,4):
        def f():
            return i*i
        fs.append(f)
    return fs

fs 持有的是function不是int 此时f还没有执行 执行f()时循环已经结束了

def count():
    def f(j):
        def g():
            return j*j
        return g
    fs = []
    for i in range(1, 4):
        fs.append(f(i)) 
    return fs

fs持有的是f() 闭包g持有外部变量j此时j不会被改变

灰_手

#2 Created at ... [Delete] [Delete and Lock User]

看我上面,如果像下面这样写就对了

def count():
    fs = []
    for i in range(1,4):
        def f(i=i):
            return i*i
        fs.append(f)
    return fs

  • 1

Reply