¿Qué son los cierres de Python?

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:
Insertar descripción de la imagen aquí

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()
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43666228/article/details/120693538
Recomendado
Clasificación