返回顶部
首页 > 资讯 > 后端开发 > Python >一个简单实例,理解python闭包
  • 391
分享到

一个简单实例,理解python闭包

2023-06-02 00:06:44 391人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

问题 : 模拟一个存钱罐有两个小朋友,小明,小唐。 年初,三位小朋友的妈妈给他们一定压岁钱。小明有100压岁钱,小唐有50。然后,每月他们不定期的将自己零花钱的一部分存起来。代码:python闭包##构造闭包def factory_save

问题 : 模拟一个存钱罐

有两个小朋友,小明,小唐。 年初,三位小朋友的妈妈给他们一定压岁钱。小明有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),同时,在生产这个模板时,能够加入一些环境变量,如果颜色,材质等。这里简单用的用压岁钱的金额不同表示。

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

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

--结束END--

本文标题: 一个简单实例,理解python闭包

本文链接: https://lsjlt.com/news/228142.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一个简单实例,理解python闭包
    问题 : 模拟一个存钱罐有两个小朋友,小明,小唐。 年初,三位小朋友的妈妈给他们一定压岁钱。小明有100压岁钱,小唐有50。然后,每月他们不定期的将自己零花钱的一部分存起来。代码:Python闭包##构造闭包def factory_save...
    99+
    2023-06-02
  • 简单谈谈Python中的闭包
    Python中的闭包 前几天又有人留言,关于其中一个闭包和re.sub的使用不太清楚。我在编程网搜索了下,发现没有写过闭包相关的东西,所以决定总结一下,完善Python的内容。 1. 闭包的概念 首先还得从...
    99+
    2022-06-04
    简单 Python
  • Python 一个简单的读取excel例
    1.1 安装pythonmac上的python默认版本是python2,如下:hanruikaideMacBook-Pro:local hanruikai$ python Python 2.7.10 (default, Feb 7 20...
    99+
    2023-01-31
    简单 Python excel
  • python闭包的实例详解
    1、在外部函数中定义内部函数,内部函数包含访问外部函数。即使外部函数的生命周期结束后,内部函数仍然可以访问外部函数变量。 2、外部函数的返回值是内部函数本身。 实例 def ou...
    99+
    2024-04-02
  • python实现一个简单的dnspod
    实现一个简单的dnspod解析api:dnspod api地址:https://www.dnspod.cn/docs/records.html#record-create #!/usr/bin/env python # -*- coding...
    99+
    2023-01-31
    简单 python dnspod
  • python下10个简单实例代码
    注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!! 1.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复...
    99+
    2022-06-04
    实例 代码 简单
  • 用Python实现一个简单的WebSoc
    ubuntu下python2.76 windows python 2.79, chrome37 firefox35通过 代码是在别人(cddn有人提问)基础上改的, 主要改动了parsedata和sendmessage这2个函数. 改代码...
    99+
    2023-01-31
    简单 Python WebSoc
  • vue实现一个简单的分页功能实例详解
    这是一个简单的分页功能,只能够前端使用,数据不能通过后台服务器进行更改,能容已经写死了。 下面的内容我是在做一个关于婚纱项目中用到的,当时好久没用vue了,就上网区找了别人的博客来看...
    99+
    2022-12-24
    vue分页功能 vue实现一个简单的分页功能
  • Python闭包与闭包陷阱举例详解
    目录1 什么是闭包2 闭包示例代码3 什么是闭包陷阱4 闭包陷阱代码实例4.2 第二组代码实例总结1 什么是闭包 在 Python 中,闭包是一种特殊的函数,它能够记住它所在的环境(...
    99+
    2023-01-28
    python中闭包的概念 python闭包详解 Python闭包
  • springboot如何实现一个简单的aop实例
    小编给大家分享一下springboot如何实现一个简单的aop实例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!简介AOP(Aspect-Oriented Programming:面向切面编程)aop能将一些繁琐、重复、无...
    99+
    2023-06-25
  • 基于springboot实现一个简单的aop实例
    简介 AOP(Aspect-Oriented Programming:面向切面编程) aop能将一些繁琐、重复、无关业务的逻辑封装起来,在一个地方进行统一处理,常用于日志记录、事务...
    99+
    2024-04-02
  • python getopt详解及简单实例
    python getopt详解 函数原型: getopt.getopt(args, shortopts, longopts=[]) 参数解释: args:args为需要解析的参数列表。一般使用...
    99+
    2022-06-04
    详解 实例 简单
  • python 类详解及简单实例
    python 类详解 类 1.类是一种数据结构,可用于创建实例。(一般情况下,类封装了数据和可用于该数据的方法) 2.Python类是可调用的对象,即类对象 3.类通常在模块的顶层进行定义,以便类实例能...
    99+
    2022-06-04
    详解 实例 简单
  • Python实现一个简单的QQ截图
    目录前言一、需求分析二、截图三、矩形选择四、按钮设置总结前言   毕设有一部分要用到类似QQ截图的功能,这里记录制作过程。因为后期要添加人工智能的功能,所以用py...
    99+
    2024-04-02
  • C++实现一个简单消息队列的示例详解
    目录前言一、如何实现1、接口定义2、用到的对象3、基本流程二、完整代码三、使用示例线程通信总结前言 消息队列在多线程的场景有时会用到,尤其是线程通信跨线程调用的时候,就可以使用消息队...
    99+
    2022-12-15
    C++实现消息队列 C++消息队列
  • TypeScript手写一个简单的eslint插件实例
    目录引言前置知识第一个eslint规则:no-console本地测试本地查看效果no-console规则添加功能:排除用户指定的文件发布npm包引言 看到参考链接1以后,觉得用TS...
    99+
    2023-02-06
    TypeScript eslint插件 TypeScript eslint
  • 用Python实现一个简单的线程池
    线程池的概念是什么?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能...
    99+
    2023-01-31
    线程 简单 Python
  • 基于Python实现一个简单的学生管理系统
    目录序言代码实战效果展示序言 小学妹说要毕业了,学了一学期Python等于没学,现在要做毕设做不出来,让我帮帮她,晚上去她家吃夜宵。 当时我心想,这不是分分钟的事情,还要去她家,男孩...
    99+
    2022-12-31
    Python实现学生管理系统 Python学生管理系统 Python管理系统
  • 理解python中的闭包
    一 什么是闭包?在一个函数内部嵌套定义了另一个函数,其中内部函数使用了外部函数作用域的变量(自由变量),并且外部函数的返回值是内部函数的引用,当外部函数结束时,外部函数的变量会被绑定到内部函数,由此就构成了闭包。闭包的本质是一个函数,它有两...
    99+
    2023-01-31
    python
  • Python 之 SSH简单实例
    服务器端代码 #Author Kang import os import subprocess import socket server = socket.socket() server.bind(('localhost',9999))...
    99+
    2023-01-31
    实例 简单 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作