使用循环变量时,闭包如何在返回函数中运行?

时间:2018-08-09 02:13:26

标签: python closures

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())

我正在学习Python,发现上面的结果是9 9 9而不是1 4 9。我尝试逐步调试代码,但是在IDE中,在将函数附加到列表时无法获得有关<function count.<locals>.f at 0x0000000003987598>的任何其他信息。我想知道代码的详细顺序是什么,尤其是在追加f()时是否会记录变量i的值(i * i或1 * 1或其他情况)。 for i in range(1, 4)的意义是什么?

0 个答案:

没有答案