闭包

闭包 闭包 = 函数 + 环境变量(函数定义的时候)

一个最简单的闭包

def curve_pre():
    def curve():
        print('This is a function')
    return curve

f = curve_pre()
f()   #This is a function

闭包不受外部变量影响

def curve_pre1():
    a = 25
    def curve1(x):
        return a*x**2
    return curve1

#闭包 = 函数 + 环境变量(函数定义的时候)
a = 20     #全局变量
f1 = curve_pre1()
print(f1.__closure__)  
 #(<cell at 0x00000216457D06D8: int object at 0x00007FFEF75AD720>,)实质返回了一个闭包
print(f1.__closure__[0].cell_contents)  #25  取出环境变量
f1(2)   
print(f1(2))  #100   调用时 a 取 25

非闭包

闭包

闭包 只是一种思维方式,函数式编程

闭包可以记忆上次调用的状态

例题,origin 最初为0,累加计算

Last updated

Was this helpful?