typestar

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

  1. aumentar se cierra sobre conteo desde crear_contador.
  2. nonlocal le permite reasignar esa variable capturada.
  3. Cada contador mantiene su propio estado independiente.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 5 en Decoradores y clausuras; paso 5 de 53 en Python pythónico.

← Anterior Siguiente →