什么是闭包呢?
闭包就是内层函数,对外层函数(非全局)的变量的引用,叫闭包
怎么理解呢?
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. 外层函数返回内层函数名
科科加油!!