Clausuras y nonlocal en Python
Funciones internas que recuerdan y mutan estado exterior.
def crear_contador(inicio=0):
conteo = inicio
def aumentar(paso=1):
nonlocal conteo
conteo += paso
return conteo
return aumentar
clics = crear_contador()
clics()
clics()
tercero = clics()
puntaje = crear_contador(100)
bono = puntaje(50)
Cómo funciona
aumentarse cierra sobreconteodesdecrear_contador.nonlocalle permite reasignar esa variable capturada.- Cada contador mantiene su propio estado independiente.
Palabras clave y builtins usados aquí
defnonlocalreturn
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 240
- Tokens
- 57
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 34 segundos.
Paso 1 de 5 en Decoradores y clausuras; paso 5 de 53 en Python pythónico.