Python学习从0到1 day27 Python 高阶技巧 ① 闭包

目录

一、闭包

作用

示例

二、nonlocal关键字

示例

三、atm取钱的闭包实现

四、闭包注意事项

优点

缺点


我陪你走了一段路,你最了解我不是吗

                                                        —— 24.11.11

一、闭包

在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包。

定义双层嵌套函数,内层函数可以访问外层函数的变量

将内存函数作为外层函数的返回,此内层函数就是闭包函数

作用

使内部函数可以使用外部变量,而不需要定义全局变量,保证了函数的安全性

示例

outer是outer函数中传入的固定的品牌名,而被确定logo变量的函数inner直接传入msg参数

def outer(logo):def inner(msg):print(f"<{logo}>{msg}<{logo}>")return innerfn1 = outer("Nike")
fn1("Hello")
fn2 = outer("Adidas")
fn2("World")


二、nonlocal关键字

通过在内部函数中定义nonlocal关键字,可以修改内部函数中的值

需要用nonlocal声明这个外部变量

示例

# 使用nonlocal关键字修改内部函数的值
def outer(num1):def inner(num2):nonlocal num1num1 += num2print(num1)return innerfn = outer(27)
fn(114)
fn(9)
fn(45)

三、atm取钱的闭包实现

# 使用闭包实现ATM小案例
def account_create(amount = 0):def atm(num,deposit = True):nonlocal amountif deposit:amount += numprint("存款:",num,",账户余额:",amount)else:amount -= numprint("取款:",num,",账户余额:",amount)return atmatm = account_create()
atm(100)
atm(200,True)
atm(210,False)

注:内部函数依赖外部变量,外部变量本质是外层函数的内部临时变量


四、闭包注意事项

优点

使用闭包可以让我们得到:

无需定义全局变量即可实现通过函数,持续的访问、修改某个值

② 闭包使用的变量的所用于在函数内,难以被错误的调用修改

缺点

由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放,一直占用内存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/14325.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

python成长技能之网络编程

文章目录 一、初识Socket1.1 什么是 Socket?1.2 socket的基本操作1.3 socket常用函数 二、基于UDP实现客户端与服务端通信三、基于TCP实现客户端与服务端通信四、使用requests模块发送http请求 一、初识Socket 1.1 什么是 Socket? Socket又称"套接字"&#xff0c;…

[ACTF2020 新生赛]Upload 1--详细解析

信息收集 题目告诉我们是一道upload&#xff0c;也就是文件上传漏洞题目。 进入界面&#xff0c;是一个灯泡&#xff0c;将鼠标放在图标上就会出现文件上传的相应位置&#xff1a; 思路 文件上传漏洞&#xff0c;先看看有没有前端校验。 在js源码中找到了前端校验&#xff…

光伏设计软件怎么选?有哪些推荐?

在光伏电站的开发建设中&#xff0c;专业设计软件是提升电站能效、降低开发成本的重要工具。市场上存在许多优秀的光伏设计软件&#xff0c;能够通过还原现状和三维建模来呈现出最符合实际需求的设计方案&#xff0c;究竟该怎么选呢&#xff1f; -易用性&#xff1a;一些软件操…

刷题强训(day06) -- 大数加法、链表相加、大数乘法

目录 1、大数加法 1.1 题目 1.2 思路 1.3 代码实现 2、链表相加&#xff08;二&#xff09; 2.1 题目 2.2 思路 2.3 代码实现 3、大数乘法 3.1 题目 3.2 思路 3.3 代码实现 1、大数加法 1.1 题目 1.2 思路 这道题可以模拟列竖式相加解答&#xff0c; 将每一位都转…

雷池waf安装并部署防护站点

雷池waf安装并部署防护站点 最低配置要求 操作系统&#xff1a;Linux 指令架构&#xff1a;x86_64 软件依赖&#xff1a;Docker 20.10.14 版本以上 软件依赖&#xff1a;Docker Compose 2.0.0 版本以上 最小化环境&#xff1a;1 核 CPU / 1 GB 内存 / 5 GB 磁盘 写在前面 本文…

AI技术赋能电商行业:创新应用与未来展望

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 引言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术正逐步渗透到各行各业&a…

【Linux】进程(状态)

大家好呀&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流哦 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各…

自动化测试框架的搭建详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 最近好多小伙伴都在说接口自动化测试&#xff0c;那么究竟什么是接口自动化测试呢&#xff1f;让我们一起往下看就知道了&#xff0c;首先我们得先弄清楚下面这…

重拾CSS,前端样式精读-媒体查询

前言 本文收录于CSS系列文章中&#xff0c;欢迎阅读指正 说到媒体查询&#xff0c;大家首先想到的可能是有关响应式的知识点&#xff0c;除此之外&#xff0c;它还可以用于条件加载资源&#xff0c;字体大小&#xff0c;图像和视频的优化&#xff0c;用户界面调整等等方面&am…

4TS Series TVS 的解析

4TS Series 400W Transient Voltage Suppressor指的是时源芯微&#xff08;TimeSource&#xff09;生产的一系列瞬态电压抑制二极管&#xff08;Transient Voltage Suppressor&#xff0c;TVS&#xff09;&#xff0c;这些二极管专门设计用于保护敏感电子设备免受雷电、电源浪涌…

语义分割数据增强,图像和标签同步对应详细增强教程(附代码)

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《图像增强》 &a…

本地部署 OpenHands

本地部署 OpenHands 0. 引言1. 部署 OpenHands2. 访问 OpenHands3. 验证 OpenHands 0. 引言 OpenHands 是一个由人工智能驱动的软件开发代理平台。 OpenHands 代理可以执行人类开发人员可以执行的任何操作&#xff1a;修改代码、运行命令、浏览网页、调用 API&#xff0c;甚至…

amber分子动力学

分子动力学模拟是分子模拟中最接近实验条件的模拟方法&#xff0c;能够从原子层面给出体系的微观演变过程&#xff0c;直观的展示实验现象发生的机理与规律&#xff0c;促使学术研究向着更高效、更经济、更有预见性的方向发展。可以解决和研究DNA的折叠和性质、蛋白与配体的识别…

丹摩征文活动 |通过Pycharm复现命名实体识别模型--MECT模型

文章目录 &#x1f34b;1 引言&#x1f34b;2 平台优势&#x1f34b;3 丹摩平台服务器配置教程&#x1f34b;4 实操案例&#xff08; MECT4CNER-main&#xff09;&#x1f34b;4.1 MECT4CNER-main模型&#x1f34b;4.2 环境配置&#x1f34b;4.3 训练模型&#x1f34b;4.4 数据…

嵌入式系统的利器C++

一、嵌入式 C 概述 嵌入式 C 在嵌入式系统开发中占据着至关重要的地位。它是 C 的一个子集&#xff0c;由日本 CPU 大厂于 1996 年提出&#xff0c;目标是在保持 C 面向对象特性的同时&#xff0c;减小代码体积、提升执行效率并简化编译器。 在嵌入式系统开发中&#xff0c;嵌…

【计算机网络】【网络层】【习题】

计算机网络-传输层-习题 文章目录 13. 图 4-69 给出了距离-向量协议工作过程&#xff0c;表&#xff08;a&#xff09;是路由表 R1 初始的路由表&#xff0c;表&#xff08;b&#xff09;是相邻路由器 R2 传送来的路由表。请写出 R1 更新后的路由表&#xff08;c&#xff09;。…

C/C++精品项目之图床共享云存储(2):MySql连接池

一&#xff1a;介绍 C/C精品项目之图床共享云存储&#xff08;1&#xff09; 我们项目的第一个文章讲解了很多的基础组件&#xff0c;包括线程池。我们都知道线程池是为了资源的复用&#xff0c;提高效率。而我们的MySql连接池也是一样的&#xff0c;是为了维持管理固定数量的…

网安数学基础-同余关系

文章目录 参考等价关系实例 同余同余和等价同余的运算 乘法逆元一次同余方程消去律 剩余类中国剩余定理欧拉函数欧拉定理 费马小定理 参考 【一口气学完】密码学的数学基础2&#xff0c;《同余关系》&#xff0c;一小时学完 等价关系 三角形里的全等关系 等价关系定义 下面这…

工业主板市场现状和主要市场驱动因素概述

工业主板市场是计算机硬件行业中的一个重要细分市场&#xff0c;专注于供应专为工业应用而设计的主板。与消费级主板不同&#xff0c;工业主板可承受极端条件&#xff0c;包括高温、连续运行以及暴露在灰尘和潮湿环境中。工业主板对于制造、自动化、医疗、国防和能源等行业中使…

舌尖上的传统美味 —— 食家巷白吉饼

第一眼看到食家巷白吉饼&#xff0c;就被它朴实的外表所吸引。圆润的形状&#xff0c;淡淡的麦色&#xff0c;没有过多的装饰&#xff0c;却散发着一种让人安心的质朴之美。 &#x1f388;拿起一个白吉饼&#xff0c;轻轻一掰&#xff0c;“咔” 的一声&#xff0c;那酥脆的外…