20 闭包

夙愿已清 提交于 2019-12-03 07:24:47

闭包

闭包存在的条件:

闭包就是能够读取其他函数内部变量的函数

python里一切皆对象,你甚至可以返回一个函数,把函数赋值给一个变量等。。。

闭包 = 函数+环境变量(函数外部的变量)

例子:

def curve_pre():
    a = 25 # 此为环境变量,它在被返回的函数的外面
    def cureve(x):
        return a*x
    return cureve
f = curve_pre() # 此时调用curve_pre返回的是一个闭包(函数+环境变量)
print(f(2))结果:50

  

__closure__闭包方法:返回当前对象的函数的闭包对象:

print(curve_pre().__closure__)或print(f.__closure__)结果:(<cell at 0x0000000000A73078: int object at 0x000000005273D1F0>,)

  

打印闭包中的环境变量:

print(f.__closure__[0].cell_contents)结果:25

  

闭包的意义:

闭包保存的是一个函数现场,它返回的不止是函数,还返回了该函数使用需要的环境变量。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!