python基础 -- 闭包

1. 作用

返回函数,并在内部引用局部参数,记住内层函数不是马上调用的,所以参数一定要不能在内层函数里面参数不能是直接调用外层函数的参数

2. 操作

牛逼了,竟然全是9

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

f1, f2, f3 = count()

f1, f2, f3 = count()

f1()
# 9
f2()
# 9
f3()
# 9

牛逼了,又不是9了

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

f1, f2, f3 = count()
f1()
# 1
f2()
# 4
f3()
#9

你可能感兴趣的:(python基础 -- 闭包)