python3之闭包的概念(轻松理解)

定义

python中满足以下3条的我们称它为闭包:

1.函数里定义了内部函数
2.外部函数有返回值且返回的值是内存部函数名
3.内部函数调用了外部函数的变量。

闭包结构示例

def fun():
    c = 0

    def fun_chicer(): #函数里定义了内部函数
        c = c + 1 #内部函数调用了外部函数的变量。
        print("有帮助就点个赞", c)
    return fun_chicer #外部函数有返回值且返回的值是内存部函数名

总结:
      到这一步就已经理解了闭包的基本结构了。

闭包应用案例一(计数器)

def number_group():
    numbers = [0]

    def add_one():
        numbers[0] += 1
        print(f'第{numbers[0]}次调用')
    return add_one


x = number_group() 
x()
x()
x()
运行结果:1次调用
第2次调用
第3次调用

分析:
      可以看到内部函数add_one被重复调用3次,直到程序运行结束才释放内存空间。

闭包应用案例二(求和)

def fun(a, b):
    c = 100

    def fun_chicer():
        s = a + b + c
        print("相加后的和为:", s)
    return fun_chicer


x = fun(1, 2)
b = fun(2, 4)
x()
b()
运行结果:
相加后的和为: 103
相加后的和为: 106

分析:
      我们发现总共传入参数2次,重新传入参数后,上一次传入的数据仍然被保留。且不会受第二次传入数据的影响。

案例总结(闭包里数据的特征)

      1.在闭包中,内部函数调用一次后所划分的内存空间是程序结束后才会释放
      2.闭包中,重传参数后不会释放上次调用的内存空间,而是重新划分新的空间保存这次的数据,且函数能重复调用
      3.在调用时可以对其中的数据进行修改(不止我所列的一种)

宝剑锋从磨砺出
梅花香自苦寒来
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霖宇长清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值