python函数闭包

函数闭包中变量可以看作被包含在了返回的函数内,但这个被闭包的变量相当于一个常量,只能被引用不能被改变。

代码: 

def f1():
    a = 10
    def f2():
        print(a,type(a))
    return f2
    
f = f1()
f()

输出: 

10 

错误的代码:改变a的值(这里a += 1换成a = 0是可以的,赋值并不是改变,python的赋值相当于重新声明了一个同名的变量)

def f1():
    a = 10
    def f2():
        a += 1
        print(a)
    return f2
    
f = f1()
f()

输出:

UnboundLocalError: local variable 'a' referenced before assignment

闭包似乎就是将用到变量的地方替换成一个常量,并将函数返回

你可能感兴趣的:(python)