Python使用闭包注意的地方

闭包中返回的函数并没有立刻执行,而是在调用时才去执行

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

f1, f2, f3 = count()

在上面的例子中,每次循环,都创建了一个新的函数,然后,把创建的3个函数都返回了。

你可能认为调用f1(),f2()和f3()结果应该是1,4,9,但实际结果是:

>>> f1()
9
>>> f2()
9
>>> f3()
9
  • 返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

你可能感兴趣的:(Python语言)