闭包函数
说明:
闭包就是一个封闭的函数,是一种特殊用法的函数,它的主要作用是代码主次分离,也就是在调动一个函数时即实现主要功能,又要让主要次功能的代码互不相扰。但它也不是必须不可的,同样的功能用普通函数都能实现,闭包的特殊体现在巧妙,它也是装饰器的基础,装饰器是一种特殊闭包。
在python中,闭包意味着函数之间存在嵌套,区分内部函数和外部函数,内部函数必须调用外部函数参数,外部函数必须返回内部函数,感觉有些绕,细想就明白了。
相较闭包的定义,调用闭包才是理解它的关键所在,下面区分讲解。
闭包函数三条件:
a,函数之间有嵌套
b,内部函数调用外部参数
c,返回内部函数
举例说明:
def fun_out(x): #外部函数
def fun_in(y) #内部函数
return x+y #调用外部参数
return fun_in #返回内部函数
闭包调用:
闭包必须满足以上三个条件,但它的调用有些麻烦,首先我们调用外部函数:
a =fun_out(100)
当调用外部函数时它就会运行外部函数里的代码,由于外部函数的代码也是一个函数(内部函数),所以 a=内部函数fun_in,这一点很重要,它是理解闭包的核心!所以 a也可以理解成一个函数,我们也可以调用a函数,调用a函数就等于调用内部函数fun_in。
b =a(200) #其实就和b=fun_in(200)相同
print(b) #返回300
因为整个函数返回内部函数,而内部函数又返回x+y,所以返回300。以上是理解闭包的基础思路,闭包能实现的功能多种多样,这个要在具体实践中多体会,但所有闭包都满足三个条件,所有调用都得二次赋值,这个不会变。