WELCOME

不积跬步,无以至千里;不积小流,无以成江海。

Python闭包

1.闭包

  函数只是一段可执行代码,编译后就"固化"了,每个函数在内存中只有一份实例,得到函数的入口点便可以执行函数了。函数还可以嵌套定义,即在一个函数内部可以定义另一个函数,有了嵌套函数这种结构,便会产生闭包问题。

2.什么是闭包

  闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数块+引用环境)。

1 def outer(n): 2 a = 10 3 4 def inner(): 5 b = a + n 6 print('内部函数', b) 7 8 return inner 9 10 11 r = outer(5) 12 print(r) 13 r() 14 # >> <function outer.<locals>.inner at 0x00000170A89D90D8> 15 # 内部函数 15

 

  在这段程序中,函数inner是函数outer的内嵌函数,并且inner函数是outer函数的返回值。我们注意到一个问题∶内嵌函数inner 中引用到外层函数中的局部变量num , Python解释器会这么处理这个问题呢﹖先让我们来看看这段代码的运行结果,当我们调用分别由不同的参数调用outer函数得到的函数时,得到的结果是隔离的(相互不影响),也就是说每次调用outer函数后都将生成并保存一个新的局部变量num,这里outer函数返回的就是闭包。如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).


__EOF__

本文作者Ambitious
本文链接https://www.cnblogs.com/ambitiousPlus/p/16046929.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Ambitious~  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示