Module (71%)
Section (74%)

Una breve explicación de cierres: continuación

Un cierre se debe invocar exactamente de la misma manera en que se ha declarado.

En el ejemplo anterior (vea el código a continuación):

def exterior(par): loc = par def interior(): return loc return interior var = 1 fun = exterior(var) print(fun()))

La función interior() no tenía parámetros, por lo que tuvimos que invocarla sin argumentos.

Ahora mira el código en el editor. Es totalmente posible declarar un cierre equipado con un número arbitrario de parámetros, por ejemplo, al igual que la función potencia().

Esto significa que el cierre no solo utiliza el ambiente congelado, sino que también puede modificar su comportamiento utilizando valores tomados del exterior.

Este ejemplo muestra una circunstancia más interesante: puedes crear tantos cierres como quieras usando el mismo código. Esto se hace con una función llamada crearcierre(). Nota:

  • El primer cierre obtenido de crearcierre() define una herramienta que eleva al cuadrado su argumento.
  • El segundo está diseñado para elevar el argumento al cubo.

Es por eso que el código produce el siguiente resultado:

0 0 0 1 1 1 2 4 8 3 9 27 4 16 64

Realiza tus propias pruebas.



Code

def crearcierre(par):
loc = par
def potencia(p):
return p ** loc
return potencia

fsqr = crearcierre(2)
fcub = crearcierre(3)
for i in range(5):
print(i, fsqr(i), fcub(i))
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×