Definición de cierre de Python
Cierre significa que cuando una función define una función interna, esta función interna usa variables (variables no globales) en el alcance de la función externa y el valor de retorno de la función externa es una referencia a la función interna, entonces esta función se considera un cierre.
Todos los atributos dentro de la función tienen un ciclo de vida y sobreviven durante la ejecución de la función. Entonces, si dejamos que la función externa devuelva la función interna, podemos llamar a la función interna nuevamente después de que finalice la ejecución de la función externa.
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())
Aquí están los resultados:
lista = [1,2,3,4,5]
def func(obj):
print(“func:”,obj)
def func1():
obj[0]+=1
print(“func1”,obj)
return func1
var = func(lista)
var()
var()