闭包的概念与理解

闭包
逻辑连续,当内部函数被调用时,不脱离当前的逻辑。
1.三要素:
– 必须有一个内嵌函数。
– 内嵌函数必须引用外部函数中变量。
– 外部函数返回值必须是内嵌函数。
2.语法
– 定义: def 外部函数名(参数): 外部变量 def 内部函数名(参数): 使用外部变量 return 内部函数名
– 调用:
变量 = 外部函数名(参数)
变量(参数)
3.定义:在一个函数内部的函数,同时内部函数又引用了外部函数的变量。
4.本质:闭包是将内部函数和外部函数的执行环境绑定在一起的对象。
5.优点:内部函数可以使用外部变量。
6.缺点:外部变量一直存在于内存中,不会在调用结束后释放,占用内存。
7.作用:实现python装饰器。

def fun01():
    a = 1

   def fun02():
        print(a)

   return fun02


# 调用外部函数,返回值是内嵌函数
result = fun01()
# 调用内嵌函数
result()  # 可以访问外部变量a


# 闭包应用:逻辑连续,当内部函数被调用时,不脱离当前的逻辑
# 压岁钱
def give_gife_money(money):
    """
        得到压岁钱
    :return:
    """
    print("得到了%d压岁钱" % money)

    def child_buy(target, price):
        """
            孩子购买商品
        :param target: 需要购买的商品
        :param price: 商品单价
        """
        nonlocal money
        if money >= price:
            money -= price
            print("孩子花了%.1f钱,购买了%s" % (price, target))
        else:
            print("钱不够啦")

    return child_buy

# 下列代码是一个连续的逻辑
action = give_gife_money(10000)
action("可乐", 3)
action("小汽车", 2000)
action("手机", 8000)

输出结果: 得到了10000压岁钱
孩子花了3.0钱,
购买了可乐
孩子花了2000.0钱,
购买了小汽车
钱不够啦

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

甲乙zzu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值