闭包
一,定义:闭包包含两个函数,内部函数和外部函数,外部函数里面定义了内部函数,内部函数使用外部函数的临时变量,外部函数的返回值是内部函数的引用
需要说明下:
一个函数,如果函数名后紧跟一对括号,相当于现在我就要调用这个函数,如果不跟括号,相当于只是一个函数的名字,里面存了函数所在位置的引用
eg:
def outer(k, b):
def inner(x):
print(k * x + b)
return inner
outer1 = outer(2, 5)
outer1(2)
python 常用的功能装饰器使用了闭包
二,区别:函数,匿名函数,闭包,面向对象
匿名函数能够完成基本的简单功能,传递的是这个函数的引用,只有功能。
普通函数能够完成较为复杂功能,传递的是这个函数的引用,只有功能。
闭包,能够完成复杂的功能,传递的是这个闭包的函数和数据,因此传递的是功能 + 数据
对象,能够完成最为复杂的功能,传递的是很多数据和很多功能,因此传递的是功能 + 数据。