1.函数对象(精髓是可以把函数当成变量去用)
函数对象指的是函数可以被当作'数据'来处理,具体可以分为四个方面的使用
1.1 函数可以被引用
def add(x,y):
return x+y
func = add
func(1,2)
3
1.2可以当做函数的参数传给别的函数
def foo(x):
print(x)
foo(func) #foo(func的内存地址)
1.3可以把函数当成一个函数的返回值
def bar():
return add
func = bar()
func(1,2)
3
1.4函数可以作为容器类型的元素
l=[func,2,3]
l[0]() #调用函数
2.闭包函数
闭包函数=名称空间与作用域+函数嵌套+函数对象
"包“:函数包含对外层函数作用域名字的引用(不是对全局作用域) 只要是外层的函数,第几层无所谓,但不能是全局作用域
- 闭包:若内嵌函数包含外部函数作用域(而非全局作用域)中变量的引用,那么该'内嵌函数'就是闭包函数,简称闭包。
- '闭'代表函数是内部的,'包'代表函数外'包裹'着对外层作用域的引用 ,因而无论在何处调用闭包函数,使用的仍然是包裹在其外层的变量。