本文主要是介绍仔仔细细的闭包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么是闭包呢?
闭包就是内层函数,对外层函数(非全局)的变量的引用,叫闭包
怎么理解呢?
f(g(x)),在这个函数里,f就是外层函数,g就是内层函数
简简单单
好处:
1.可以让一个局部变量常驻内存
2.防止其他程序修改这个变量
1.函数的返回值通过return 返回一个变量,此外,函数也可以返回另一个函数名
def f1():print("欢迎大家!")
def f2():print("回头科科")return f1
a=f2()
a()
print("*"*50)
f2()()
2.还可以将 f2( ) 函数的定义移动到 f1( )函数中,这样在 f1( ) 函数外的作用域就不能直接调用 f2( ) 函数
def f1():print("回头科科")def f2():print("欢迎大家!")return f2
a=f1()
a()
print("*"*50)
f1()()
3.示例
在函数f1()中传入一个参数,在函数f2()中对该参数中的元素求和。
list = [1,2,4,5,6]
def f1(*args):def f2():return sum(*args)return f2
x = f1(list)
print(x())
怎么理解呢
首先这样看,调用函数的时候按照顺序就会执行到return f2
这个时候,才会执行函数f2
并且将函数f2的返回值返回到主函数
最后总结:
如果内层函数引用了外层函数的变量(包括其参数),并且外层函数返回内层函数名,这种函数架构称为闭包。闭包满足的如下3个条件:
1. 内层函数的定义嵌套在外层函数中。
2. 内层函数引用外层函数的变量
3. 外层函数返回内层函数名
科科加油!!
这篇关于仔仔细细的闭包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!