python笔记-闭包

闭包: 

  在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。

def fun1(X):

    def fun2(Y)

          return X*Y

     return fun2

>>fun1(3)(3)

>>9

def outer( a ):
    b = 10
    # inner是内函数
    def inner():
        #在内函数中 用到了外函数的临时变量
        print(a+b)
    # 外函数的返回值是内函数的引用
    return inner

>>outer(3)()

>>13

def fun1():

    X=5

    def fun2(Y):

          X*=X

          return X

     return fun2

这样的话,会报错,因为此时的X被认为是局部变量

可改为:

def fun1():

       X=5

       def fun2():

              nonlocal X

              X*=X

              return X

       return fun2

参考了这篇文章

 

你可能感兴趣的:(日常被坑系列)