python-闭包知识点

news2024/10/9 18:26:01

目录标题

    • 1、函数参数
    • 2、闭包
    • 3、闭包的使用
    • 4、闭包内修改外部变量

1、函数参数

def fun01():
	print('func01 is show')
#fun01()  会输出打印结果
print(fun01)#输出:<function ox11....地址>
#函数名存放的是函数所在空间的地址

fun02 = fun01 #函数名也可以像普通变量一样赋值
fun02() #输出:func01 is show

函数名–存放的是函数所在空间的地址
函数名()—执行函数名所存放空间地址中的代码
函数名也可以像普通变量一样赋值,fun02 = fun01

def foo(func):
	func()
foo(func01) #输出:func01 is show

2、闭包

调用完函数后,函数内的变量都销毁了,需要保存函数内的变量时----用闭包

闭包定义:在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,把使用外部函数变量的内部函数称为闭包
在这里插入图片描述

#嵌套函数,函数里面再定义函数
def func_out(num1):
	def func_inner(num2):
		num = num1 +num2  #内部函数使用了外部函数的变量num1
		print("现在的值:",num)
	return func_inner  #外部函数返回了内部函数

#创建闭包实例
f = func_out(10)
#执行闭包
f(1)  #返回11
f(2)  #返回12

其中:f = func_inner,f() =func_inner()
结论:通过f = func_out(10)创建闭包,实际上f()等价于内部函数func_inner()即调用闭包就相当于调用内部函数

结论:闭包可以对外部函数的变量进行保存

3、闭包的使用

需求:根据配置信息使用闭包实现不同人的对话信息
在这里插入图片描述

#外部函数
def config_name(name):
	#内部函数
	def say_info(info):
		print(name+":",info)
	return say_info

tom = config_name("tom")
tom("你好")
tom("你在吗")

jer = config_name("jerry")
jer("你好")
jer("你在吗")

在这里插入图片描述
闭包不仅可以保存外部函数的变量,还可以提高代码的复用性

4、闭包内修改外部变量

def func_out(num1):
	def func_inner(num2):
		nonlocal num1 #这样定义一下,就可以改变外部的num1了
		num1 = num1 +10  #这里的num1是新变量内部变量,不改变外部的num1
	print(num1)
	func_inner(10)
	print(num1)
	return func_inner  #外部函数返回了内部函数

#创建闭包实例
f = func_out(10)
#执行闭包
f(1)  #返回11

在这里插入图片描述
如果没有nonlocal num1 这句,则两次打印的值都是10

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

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

相关文章

中国电子学会2021年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)

青少年软件编程&#xff08;图形化&#xff09;等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共 25 题&#xff0c;共 50 分) 执行下列程序&#xff0c;屏幕上可以看到几只小猫&#xff1f;&#xff08;B &#xff09;(2…

奇怪的一些

1、请求200 但是请求回来的是html 网络里会写 200OK from disk cache 这个时候需要清除浏览器缓存 2、base64 引入失败 找一个js文件直接引入 require is not defined import Base64 from ‘***’ https://blog.csdn.net/u011383596/article/details/116712729 3、promise prom…

dataworks插入,分组,排序,关联语句

– 向表中插入数据 – insert into/overwrite table 表名 values (…),(…),…; – insert into/overwrite table 表名 select …; – 创建样例表 create table if not exists temp_test_xsxx_30( xh string comment ‘学号’, xm string comment ‘姓名’, xb string comment…

C++初阶--map和set

目录 关联式容器 set set的模板参数列表 set的构造 set的使用 multiset map map的模板参数 map的构造 map的容量与元素访问 map的使用 multimap 底层结构 AVL树 节点的定义 实现 图解 红黑树 性质 节点的定义 实现 图解​ 红黑树模拟实现STL中的map和set MyMap.h MySet.…

windows系统使用Freeglut+glew库编写opengl程序(Mingw)

Freeglut glut是opengl实用工具集,由Mark Kilgrad所写。可以用来显示窗体,管理用户输入,字体,图像等操作,现在已经停止维护了,它的3.7版本是苹果电脑操作系统Mac OS 10.8(又名“美洲狮”)的opengl实用工具库的框架基础 使用更新的Freeglut替代glut,Freeglut是由Pawel…

论Unity_InputSystem如何使用(一)

一、导入 在Window——PackageManage中搜索InputSystem&#xff0c;下载导入。如果搜不到&#xff0c;则调整为UnityRegistry。 二、更改输入模式 Edit——ProjectSettings——Player——OtherSettings——Configuration——Active Input Handling&#xff0c;选择旧版或者新…

【虚拟现实】密西根大学 AR/VR/MR/XR 课程笔记

AR/VR/MR/XRModule 1 of 4: XR Terminology & ApplicationsVR and ARMixed RealityXRXR technology landscapeModule 1 of 4: XR Terminology & Applications 本模块将建立围绕 XR 的不同概念&#xff0c;并提供相关技术的简要概述。 了解 AR、VR 和 MR 的潜力和局限性…

RPA自动化办公05——Uibot自动抓取网页数据

参考&#xff1a;数据获取和处理_UiBot开发者指南 Python爬虫要对网页文件结构有一定了解&#xff0c;而且写程序一点一点把数据弄出来也很麻烦。 但是Uibot爬取数据是很简单的。 全部流程不过几步&#xff0c;本次爬取某东手机商品的信息&#xff1a; 电商数据爬取 网页长…

VR视频加密SDK方案一机一码

VR视频比传统的平面视频给用户带来更好的体验&#xff0c;而且现在在教育、娱乐等领域VR类视频也越来越多。相比传统的视频制作&#xff0c;VR视频的成本要更高&#xff0c;所以重视VR视频的版权保护提升安全性&#xff0c;是很多VR内容制作商不得不考虑的问题。那么VR视频加密…

【Scipy】菲涅尔积分和羊角螺线

文章目录菲涅尔积分简介复数域的菲涅尔积分羊角螺线菲涅尔积分简介 菲涅尔积分一般被写为S(x)S(x)S(x)和C(x)C(x)C(x)&#xff0c;定义为 S(x)∫0xsin⁡(t2)dt∑n0∞(−1)nx4n3(2n1)!(4n3)C(x)∫0xcos⁡(t2)dt∑n0∞(−1)nx4n1(2n)!(4n1)S(x)\int^x_0\sin(t^2)\text dt\sum^\i…

SpringBoot中如何优雅的使用多线程

本文带你快速了解Async注解的用法&#xff0c;包括异步方法无返回值、有返回值&#xff0c;最后总结了Async注解失效的几个坑。 在 SpringBoot 应用中&#xff0c;经常会遇到在一个接口中&#xff0c;同时做事情1&#xff0c;事情2&#xff0c;事情3&#xff0c;如果同步执行的…

【翻译】为深度学习购买哪种GPU: 我在深度学习中使用GPU的经验和建议

文章目录概述GPU是如何工作的&#xff1f;对深度学习处理速度最重要的GPU规格张量核心没有张量核心的矩阵乘法使用张量核心的矩阵乘法带有张量核心和异步拷贝的矩阵乘法&#xff08;RTX 30/RTX 40&#xff09;和TMA&#xff08;H100&#xff09;内存带宽二级缓存/共享内存/一级…

服务器遭受cc攻击的处置策略

如果服务器遭到了CC攻击&#xff0c;你可以采取以下措施来解决问题&#xff1a;使用防火墙和安全组进行限制&#xff1a;限制服务器的流量以防止进一步的攻击。升级服务器资源&#xff1a;为了应对更高的流量&#xff0c;可以升级服务器的内存&#xff0c;处理器等资源。安装防…

字节跳动青训营--前端day5

文章目录前言一、初识HTTP拓展—输入地址到页面渲染发生了哪些事情二、协议分析1.发展2.报文2.1 请求报文&#xff1a;请求行&#xff1a;请求头主体2.2 响应报文&#xff1a;状态行响应头响应正文2.3缓存3.发展3.1 Http23.2 Https前言 仅以此文章记录学习历程 一、初识HTTP …

kubernetes核心概念 Service

kubernetes核心概念 Servicekubernetes核心概念 Service一、 service作用二、kube-proxy三种代理模式2.1 UserSpace模式2.2 iptables模式2.3 ipvs模式2.4 iptables与ipvs对比三、 service类型3.1 service类型3.2 Service参数四、 Service创建4.1 ClusterIP类型4.1.1 普通Cluste…

1月安全月报 | 2亿Twitter用户数据被公开;美计划发起“黑掉五角大楼3.0”漏洞赏金计划

目录 国外安全热点 &#x1f449;安全政策 &#x1f449;数据安全 &#x1f449;市场趋势 &#x1f449;勒索事件 国内安全热点 &#x1f449;数据安全 &#x1f449;业务安全 &#x1f449;移动安全 &#x1f449;网安政策 为了让大家更全面的了解网络安全的风险&am…

精读JavaScript中的代理(Proxy)与反射(Reflect)

目录 定义与概念 属性及函数 Proxy Reflect 使用场景 如何实现 实现过程 运行效果 应用限制及优点 写在最后 定义与概念 JavaScript中的Proxy与Reflect是ES6中引入的新特性&#xff0c;它们可以帮助我们更高效地控制对象。 代理&#xff08;Proxy&#xff09;是一种…

元宇宙哪些吓死人的概念话题

元宇宙哪些吓死人的概念话题 深层的奥秘&#xff1a;人是符号及符号的意义驱动的 趣讲大白话&#xff1a;现有概念再有东西 ************** **元宇宙与跨学科 2.1 元宇宙与交叉学科 2.2 元宇宙与哲学 2.3 元宇宙与文学 2.4 元宇宙与艺术学 2.5 元宇宙与电影学 2.6 元宇宙与传播…

【面向对象】构造函数与析构函数详解

构造函数与析构函数详解 文章目录构造函数类型参考博客&#x1f60a;点此到文末惊喜↩︎ 构造函数 类型 默认构造函数&#xff08;缺省构造函数&#xff09; 一个类中只能出现一个默认构造函数在调用时&#xff0c;不需要传入实参。因为默认构造函数通常是无参的或所有形参都…

射频信号探测器制作

射频信号探测器制作一、元件要求二、芯片参数三、原理剖析四、实验思路五、实物展示、使用六、个人总结一、元件要求 CD4001&#xff0c;是四2输入或非门。或非门的逻辑关系特点是只有当输入端全部为低电平时&#xff0c;输出端为高电平状态&#xff1b;在其余输入情况下&…