r = f(i) ,得到的r 是1*1,还是j*j?
def count(): fs = [] for i in range(1, 4): def f(j): def g(): return j*j return g r = f(i) #这里r返回的是一个函数,函数内容是什么?【即:返回函数时,如何如何查看函数内容】 fs.append(r) return fs f1, f2, f3 = count() print f1(), f2(), f3()
def count(): fs = [] for i in range(1, 4): def f(j): def g(): return j*j return g r = f(i) #这里r返回的是一个函数,函数内容是什么?【即:返回函数时,如何如何查看函数内容】 fs.append(r) return fs f1, f2, f3 = count() print f1(), f2(), f3()
2019-12-11
参考这个函数: def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() print f1, f2, f3 该函数最终会返回9, 9 ,9,为什么?
在这个函数中i是count函数的局部变量
当i= 1时,i指向了1,结果返回了函数的地址放在了fs的第一个位置。
当i = 2时,又将i 指向了2,函数地址返回到了fs的第二个位置上。
当i = 3 时,i 指向了3,然后返回了函数地址在fs的第三个位置。
所以当调用函数显示的时候,i 已经是3,所以得到的结果是一样的。
举报