Saltar al contenido

Gestores de contexto

Python · Unidad 21: Python avanzado

with open(...) cierra el archivo solo. Cualquier objeto puede usarse con with si tiene dos métodos: __enter__ corre al entrar al bloque y __exit__ al salir.

__exit__ recibe datos del error si lo hubo; con *args los acepta todos sin usarlos.

class Marco:
    def __enter__(self):
        print("== inicio")
    def __exit__(self, *args):
        print("== fin")

with Marco():
    print("Ana: 9")

Imprime

== inicio
Ana: 9
== fin

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

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

  1. 1. Predice la salida

    ¿Qué imprime este código?

  2. 2. Predice la salida

    ¿Qué imprime este código?

  3. 3. Completa el código

    Completa para que el timbre suene al entrar y al salir del bloque.

  4. 4. Encuentra el bug

    Debería imprimir abro, paso y cierro. ¿Qué línea tiene el error?

  5. 5. Predice la salida

    ¿Qué imprime este código?

  6. 6. Completa el código

    Completa para que el turno avise cuándo empieza y cuándo termina.

  7. 7. Ordena las líneas

    Ordena para que el gasto salga entre corchetes con su título.

  8. 8. Opción múltiple

    ¿Qué ventaja tiene with sobre escribir tú la línea de cierre al final del bloque?

  9. 9. Predice la salida

    ¿Qué imprime este código?

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 →