首页 > 编程知识 正文

Python中的闭包函数,python中的闭包有什么用

时间:2023-05-03 17:48:31 阅读:269937 作者:2991

谈谈对Python中闭包的理解

Python中的闭包是一个比较模糊的概念,有很多朋友都认为不好理解,但是随着深入学习,就会发现闭包无论如何都是需要去理解的,下面我将自己对闭包的理解进行阐述,希望能够对你有所帮助 ~

闭包的理解

我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。

闭包的格式

下面用伪代码进行闭包格式的描述

def 外层函数(参数): def 内层函数(): print("内层函数执行", 参数) return 内层函数内层函数的引用 = 外层函数("传入参数")内层函数的引用()

外层函数中的参数,不一定要有,据情况而定,但是一般情况下都会有并在内函数中使用到

案例 def func(a, b): def line(x): return a * x - b return lineline = func(2, 3)print(line(5))

结果得到 7
在这个案例中,外函数func有接收参数 a=2,b=3,内函数line接收参数x=5,在内函数体中计算了a*x-b 即 2×5-3的值作为返回值,外函数返回内函数的引用,这里的引用指的是内函数line在内存中的起始地址,最终调用内函数line()得到返回值7

内函数中修改外函数的值

一般在函数结束时,会释放临时变量,但在闭包中,由于外函数的临时变量在内函数中用到,此时外函数会把临时变量与内函数绑定到一起,这样虽然外函数结束了,但调用内函数时依旧能够使用临时变量,即闭包外层的参数可以在内存中进行保留
如果想要在内函数中修改外函数的值,需要使用 nonlocal 关键字声明变量

def func(a, b): def line(x): nonlocal a a = 3 return a * x - b return lineline = func(2, 3)print(line(5))

此时运行结果为:12

闭包的用途

Python中,闭包的主要用途就是用于装饰器的实现,以后博客中将会对装饰器做详细解释↖(^_^)↗

以上便是本人对闭包的理解,希望能够对初学者有所帮助,欢迎小伙伴们批评指正 ~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。