python闭包

闭包


在python中,闭包是理解修饰器的基础。

构成闭包的条件:

  • 需要嵌套内部函数
  • 内部函数使用外部函数的参数
  • 返回值为内部函数名
示例

def func():
    a = 10
    def inner_func():
        print('a的值为',a)
    return inner_func

x = func()
x()

代码解读:
func函数返回的是inner_func的地址,所以返回值x等价于inner_func,调用函数需要加括号。

闭包的特点:保存参数状态

示例
# 复杂的闭包(含参数)
def func(b,c):
    a = 10
    def inner_func():
        print('a+b+c的值为',a+b+c)
    return inner_func

x1 = func(1,2)

x2 = func(3,4)

x1()
x2()

输出结果:

a+b+c的值为 13
a+b+c的值为 17

代码解读:第二次调用并没有改变第一次调用中b和c的值。

闭包的缺点

  • 作用域郿那么直观
  • 因为变量不会被垃圾回收,所以有一定的内存占用问题。
全部评论

相关推荐

09-22 22:22
中山大学 Java
双尔:赌对了,不用经历秋招的炼狱真的太好了,羡慕了
点赞 评论 收藏
分享
元星砂:好像写的太简洁了,你把项目经理写详细一点多一点,不是还有电赛经历吗怎么没写上去?还有跳远什么奖项这些跟实习没有关系的都删了
投递实习岗位前的准备
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务