幼儿园春季育儿知识,谷丽萍父亲是谁,亚冠16强对阵
打算在过年前每天总结一个知识点,所以把自己总结的知识点分享出来,中间参考了网络上很多大神的总结,但是发布时候因为时间太久可能没有找到原文链接,如果侵权请联系我删除
首先一个函数,如果函数名后紧跟一对括号,相当于现在我就要调用这个函数,如果不跟括号,相当于只是一个函数的名字,里面存了函数所在位置的引用。
闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
def myclosure(msg): closuremsg = "闭包msg" def inner(): print(closuremsg) return closuremsg+msg # 返回内部函数的应用 return inner a = myclosure("闭包测试") print(a()) b = myclosure("闭包是否能识别变量测试") print(b()) 输出结果: 闭包msg 闭包msg闭包测试 闭包msg 闭包msg闭包是否能识别变量测试
按理说myclosure函数调用结束后closuremsg参数的作用域结束,closuremsg内存空间释放
但是外函数结束的时候发现内部函数将会用到自己的临时变量,这两个临时变量就不会释放,会绑定给这个内部函数,所以外函数已经结束了,调用内函数的时候仍然能够使用外函数的临时变量。
闭包的临时变量修改-使用nonlocal关键字
def myclosure(): closurvar = 10 def inner(innervar): nonlocal closurvar closurvar +=innervar return closurvar # 返回内部函数的应用 return inner c = myclosure() print(c(1)) print(c(2)) 输出结果: 11 13
可以看出每次调用inner的时候使用的closurvar变量其实是一个。
闭包的作用
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python爬虫:Request Payload和Form Data的简单区别说明
浅谈Python中threading join和setDaemon用法及区别说明
Python3-异步进程回调函数(callback())介绍
python继承threading.Thread实现有返回值的子类实例
Python中使用threading.Event协调线程的运行详解
网友评论