上面我们已经学习了函数嵌套,名称空间和变量作用域
在说闭包函数之前
我们先来复习一下函数对象,就是理解函数即变量
函数对象(变量)作用:
1:可以被赋值
2:可以当做参数传给函数
3:可以作为函数的返回值
4:可以作为容器类型的元素
那么什么是闭包函数呢?
闭包函数:定义在函数内部的函数,且该函数引用了非全局的外部变量。则该函数就是闭包函数。或者说在嵌套函数中 内层函数引用到了外层函数的变量,就形成了闭包。
为什么要使用闭包呢
#1.我们想使用函数内部的变量
2.如果我们需要重用一个变量,但是希望这个变量不被污染
如何用:
1外层函数定义一个变量,和一个内层函数
2 外层函数将内层函数返回到外部
3.调用外层函数时,就获得了内层函数的对象,这样就构成了一个闭包(即等于调用内层函数 ,而内层函数的作用域可以向上查找)
def outer(): x=2 def inner(): print(x) pass return inner
总结:
优点:读取函数内部变量,将变量封装起来,可以减少传参次数
缺点:比普通函数消耗内层