Python LanguageGestores de contexto (declaración “con”)


Introducción

Si bien los administradores de contexto de Python son ampliamente utilizados, pocos entienden el propósito detrás de su uso. Estas declaraciones, comúnmente utilizadas con los archivos de lectura y escritura, ayudan a la aplicación a conservar la memoria del sistema y mejorar la administración de recursos al garantizar que los recursos específicos solo se usan para ciertos procesos. Este tema explica y demuestra el uso de los gestores de contexto de Python.

Sintaxis

  • con "context_manager" (como "alias") (, "context_manager" (como "alias")?) *:

Observaciones

Los gestores de contexto se definen en PEP 343 . Están diseñados para ser utilizados como un mecanismo más sucinto para la administración de recursos que el que try ... finally construye. La definición formal es la siguiente.

En este PEP, los gestores de contexto proporcionan los __enter__() y __exit__() que se invocan al ingresar y salir del cuerpo de la declaración with.

Luego pasa a definir la instrucción with lo siguiente.

with EXPR as VAR:
    BLOCK

La traducción de la declaración anterior es:

   mgr = (EXPR)
   exit = type(mgr).__exit__  # Not calling it yet
   value = type(mgr).__enter__(mgr)
   exc = True
   try:
       try:
           VAR = value  # Only if "as VAR" is present
           BLOCK
       except:
           # The exceptional case is handled here
           exc = False
           if not exit(mgr, *sys.exc_info()):
               raise
           # The exception is swallowed if exit() returns true
   finally:
       # The normal and non-local-goto cases are handled here
       if exc:
           exit(mgr, None, None, None)

Gestores de contexto (declaración “con”) Ejemplos relacionados