“返回的函数并没有立刻执行,而是直到调用了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)的值就被固定下来了 这一部分可以理解类似为我们手动调用第一个函数的过程。 这个技巧大概就是在返回函数内部再弄个返回函数并且调用,然后就能固定内部循环变量的值了
Sign in to make a reply
单人玩家海苔卷
大家注意文中这句话。 然后看第二个函数
我们假设现在到了i=1。看倒数第二行
这个时候f(i)被调用了。所以f(j)里面的返回函数需要立即执行,返回1*1=1.f(1)的值就被固定下来了 这一部分可以理解类似为我们手动调用第一个函数的过程。 这个技巧大概就是在返回函数内部再弄个返回函数并且调用,然后就能固定内部循环变量的值了