栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

闭包的概念与理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

闭包的概念与理解

闭包
逻辑连续,当内部函数被调用时,不脱离当前的逻辑。
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钱,
购买了小汽车
钱不够啦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/275842.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号