Python闭包定义
闭包是指当函数定义了一个内部函数时,这个内部函数使用了外部函数作用域里的变量(非全局变量)且外部函数的返回值是内部函数的引用,那么这个函数就被认为是一个闭包。
函数内的属性,都是有生命周期的,都是在函数执行期间存活。所以我们让外部函数return内部函数,就能在外部函数执行结束后,再次调用内部函数啦。
print('------------case1----------')
def a(x): #外部函数
x+=2 #外部函数作用域里的变量
def b(y): #内部函数
print(y)
return ('等于%s!'%(y+x)) #内部函数使用了外部函数的变量x,让x活下来了
return b #返回了内部函数,b()函数被保留了
f=a(2) #执行了x=x+2=4,return b,即f==b
print(f(6)) #f(6)=b(6),此时y=6,x=4,执行y+x=10
print('------------case2----------')
def a():
def b():
print('第一个功能')
print('第二个功能')
return b
x = a() #因为return 所以x==b
print(x()) # x()即b() 执行函数b,因为b无返回值,返回值为None
print(type(x)) #x是一个function类型
print('------------case3----------')
def a(c):
def b():
print('第一个功能')
c()
print('第二个功能')
return b
def c():
print('附加功能')
x = a(c)
print(x())
下面是运行结果:
list = [1,2,3,4,5]
def func(obj):
print(“func:”,obj)
def func1():
obj[0]+=1
print(“func1”,obj)
return func1
var = func(list)
var()
var()