网站建设资讯

NEWS

网站建设资讯

一个简单实例,理解python闭包-创新互联

问题 : 模拟一个存钱罐

有两个小朋友,小明,小唐。 年初,三位小朋友的妈妈给他们一定压岁钱。小明有100压岁钱,小唐有50。然后,每月他们不定期的将自己零花钱的一部分存起来。

站在用户的角度思考问题,与客户深入沟通,找到峡江网站设计与峡江网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网络空间、企业邮箱。业务覆盖峡江地区。

代码:Python闭包

##构造闭包
def factory_save(base_money):
    def save(add_money=0):
        nonlocal base_money
        sum_money = base_money + add_money
        base_money = sum_money
        return sum_money
    return save
##实例化(压岁钱不同以区别)
xiaoming_save = factory_save(100)
xiaotang_save = factory_save(50)
#小明存钱
##存钱
xiaoming_save(20)
##显示当前存款
print(xiaoming_save())
#小唐存钱
##存钱
xiaotang_save(5)
##显示当前存款
print(xiaotang_save())

说明 :闭包=工厂+机器模板(函数+环境变量)

闭包,就是一个函数,引用了函数外定义的变量,可以叫着自由变量或者环境变量。这里就是函数save,引用了外面定义的base_money变量。所以闭包,可以简单理解为一个函数+环境变量的封装。

外面的函数factory_save,就像一个生产存钱罐的工厂,能生产一个个模板(save),同时,在生产这个模板时,能够加入一些环境变量,如果颜色,材质等。这里简单用的用压岁钱的金额不同表示。

生产成的模板实例化后,就是一个个存钱罐,可以是小明的存钱罐,小唐的存钱罐。

这里需要注意是的,当环境变量带入模板函数后,这个变量的作用域就在这个函数,并且能够在内存中长存,也就起到了累加的作用。


当前标题:一个简单实例,理解python闭包-创新互联
当前URL:http://njwzjz.com/article/dppdoj.html