typestar

Gestores con contextlib en Python

Crear gestores de contexto sin escribir una clase.

import contextlib


@contextlib.contextmanager
def etiqueta(nombre):
    print(f"<{nombre}>")
    try:
        yield nombre
    finally:
        print(f"</{nombre}>")


with etiqueta("article") as exterior:
    with etiqueta("p"):
        print("hola adentro")

with contextlib.suppress(FileNotFoundError):
    open("missing.txt")

Cómo funciona

  1. @contextmanager convierte un generador en un bloque with.
  2. El código antes de yield es preparación; el de después, limpieza.
  3. suppress se traga en silencio una excepción elegida.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
286
Tokens
77
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 46 segundos.

Escribe este fragmento

Paso 1 de 5 en Protocolos y gestores de contexto; paso 15 de 53 en Python pythónico.

← Anterior Siguiente →