Discuss / Python / 第二个函数的理解。

第二个函数的理解。

Topic source

“返回的函数并没有立刻执行,而是直到调用了f()才执行。我们来看一个例子:”

大家注意文中这句话。 然后看第二个函数

def count():
    def f(j):
        def g():
            return j*j
        return g
    fs = []
    for i in range(1, 4):
        fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()
    return fs

我们假设现在到了i=1。看倒数第二行

        fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()

这个时候f(i)被调用了。所以f(j)里面的返回函数需要立即执行,返回1*1=1.f(1)的值就被固定下来了 这一部分可以理解类似为我们手动调用第一个函数的过程。 这个技巧大概就是在返回函数内部再弄个返回函数并且调用,然后就能固定内部循环变量的值了


  • 1

Reply