码迷,mamicode.com
首页 > 其他好文 > 详细

20 闭包

时间:2019-11-02 18:15:39      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:pre   外部   作用   highlight   return   obj   赋值   python   其他   

闭包的概念

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

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

闭包存在的条件

  • 闭包必须返回一个函数
  • 被返回的函数必须调用环境变量

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 闭包

标签:pre   外部   作用   highlight   return   obj   赋值   python   其他   

原文地址:https://www.cnblogs.com/scopicat/p/11783024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!