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).
作者:Ambitious
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!