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的值。

闭包的缺点

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

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务