Saltar al contenido

Proyecto: decorador que cuenta llamadas

Python · Unidad 21: Python avanzado

Vas a escribir un decorador con memoria. Junta las dos primeras lecciones: la envoltura es un closure, y lo que recuerda entre llamadas vive en la función de afuera.

Este deja pasar una sola vez.

def primera(f):
    hecho = False
    def envuelta(*args):
        nonlocal hecho
        if hecho:
            return "ya"
        hecho = True
        return f(*args)
    return envuelta

@primera
def entrar():
    return "bienvenida"

print(entrar(), entrar())

Imprime

bienvenida ya

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Completa el código

    Completa para que la cuenta siga subiendo entre llamadas.

  2. 2. Escribe el código

    Escribe contar: antes de llamar a la función, imprime Llamada 1, Llamada 2, y así; después entrega el resultado como siempre. Usa print("Llamada", veces).

  3. 3. Escribe el código

    Ahora la cuenta se guarda en el diccionario veces, con el nombre de la función de llave: f.__name__. usar ya está escrita y regresa el total y la cuenta; veces.clear() deja el diccionario vacío antes de empezar.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →