说说Python中闭包是什么?
原创 小猿同学 程序IT圈 2019-11-12
问:说说Python中闭包是什么?
答:可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,外函数和内函数。在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。
闭包在Python中很常见,只不过你没特别注意这就是一个闭包。比如Python中的装饰器Decorator,假如你需要写一个带参数的装饰器,那么一般都会生成闭包。
下面先用伪代码进行闭包格式的描述:
def 外层函数(参数):
def 内层函数():
print("内层函数执行", 参数)
return 内层函数
内层函数的引用 = 外层函数("传入参数")
内层函数的引用()
再来个闭包最简单的例子,方便大家理解:
#闭包函数的实例
# outer是外部函数
def outer( a ):
# inner是内函数
def inner( b ):
#在内函数中 用到了外函数的临时变量
print(a+b)
# 外函数的返回值是内函数的引用
return inner
ret = outer(5) #ret = inner
ret(10) #15 ret 存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数
上面ret(10),运行结果是15,你看懂了吗?在这个案例中,外函数outer有接收参数 a=5,内函数inner接收参数b=10,在内函数体中计算了a+b 即 5+10的值作为返回值,外函数返回内函数的引用,这里引用指的是内函数inner在内存中的起始地址,最终调用内函数inner()得到返回值15。
文末推荐闭包的文章链接:
https://www.cnblogs.com/Lin-Yi/p/7305364.html
如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!
https://mp.weixin.qq.com/s?src=11×tamp=1578798917&ver=2091&signature=KpoU*pTSqS9WmiVU0gwS6t1t2ske0dzX98lZ4h5t-39TIxOvIFm3RHNmhGnx2nHF5vS6zwIp89nKY1QtcdGsPJcssGW1rWf-Woun9QoJHEEf1MbDFNhkkX*9bzcDznZN&new=1
说说Python中闭包是什么?
最新推荐文章于 2024-02-04 15:49:23 发布