20 闭包
Posted scopicat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20 闭包相关的知识,希望对你有一定的参考价值。
闭包的概念
闭包就是能够读取其他函数内部变量的函数
闭包 = 函数+环境变量(函数外部的变量)
闭包存在的条件
- 闭包必须返回一个函数
- 被返回的函数必须调用环境变量
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
闭包的意义
闭包保存的是一个函数现场,它返回的不止是函数,还返回了该函数使用需要的环境变量。
闭包的作用
以上是关于20 闭包的主要内容,如果未能解决你的问题,请参考以下文章