什么是闭包函数
函数嵌套+函数对象+名称空间与作用域
闭:定义在函数内的函数
包:该内部函数需要访问一个名字,该名字属于外层函数作用域的(强调:不是全局作用域)
为何要用闭包函数
为了实现装饰器
如何用闭包函数
def outter():
xxx=111 #这个就是外层函数作用域
def inner():
print(xxx) #这里需要访问外层函数作用域的值
return inner
f=outter()
def foo():
xxx=2222
f()
foo()
PS:什么是闭包函数,就是outter下层(包起来的函数inner)函数inner,整个嵌套的方式就是闭包函数
为函数体传参的两种解决方案
方案一: 直接以参数的形式传入
def func(xxx):
print(xxx)
func(111)
方案二:闭包函数的传参
def outter(xxx):
def func():
print(xxx)
return func
func=outter(111)
PS:这里将xxx以参数的形式传入,这样整个函数架构就非常灵活