El administrador de contexto se utiliza para administrar los recursos utilizados por el programa. Después de completar el uso, tenemos que liberar memoria y terminar las conexiones entre archivos. Si no se liberan, se producirán pérdidas de recursos y el sistema puede ralentizarse o bloquearse. Incluso si no liberamos recursos, los administradores de contexto implícitamente realizan esta tarea.
Consulte el siguiente artículo para hacerse una idea de los conceptos básicos de Context Manager.
Administrador de contexto
método __salir__()
Este es un método de ContextManager
clase. El __exit__
método se encarga de liberar los recursos ocupados con el fragmento de código actual. Este método debe ejecutarse pase lo que pase después de que hayamos terminado con los recursos. Este método contiene instrucciones para cerrar correctamente el controlador de recursos de modo que el recurso se libere para su uso posterior por parte de otros programas en el sistema operativo.
Si se genera una excepción; su tipo, valor y rastreo se pasan como argumentos a __exit__()
. De lo contrario, se proporcionan tres None
argumentos. Si se suprime la excepción, el valor de retorno del __exit__()
método será True
, de lo contrario, False
.
sintaxis: __exit__(self, tipo_excepción, valor_excepción, rastreo_excepción)
parámetros:
Exception_type: indica la clase de excepción.
valor_excepción: indica el tipo de excepción. como divide_by_zero error, float_point_error, que son tipos de excepciones aritméticas.
exception_traceback: traceback es un informe que tiene toda la información necesaria para resolver la excepción.
# Ejemplo 1: .
# Python program creating a # context manager class ContextManager(): def __init__(self): print('init method called') def __enter__(self): print('enter method called') return self def __exit__(self, exc_type, exc_value, exc_traceback): print('exit method called') with ContextManager() as manager: print('with statement block')
Producción :
init method called enter method called with statement block exit method called
# Ejemplo 2: comprensión de los parámetros de __exit__()
. Crearemos un administrador de contexto que se usará para dividir dos números. Si el
# Python program to demonstrate # __exit__ method class Divide: def __init__(self, num1, num2): self.num1 = num1 self.num2 = num2 def __enter__(self): print("Inside __enter__") return self def __exit__(self, exc_type, exc_value, traceback): print("\nInside __exit__") print("\nExecution type:", exc_type) print("\nExecution value:", exc_value) print("\nTraceback:", traceback) def divide_by_zero(self): # causes ZeroDivisionError exception print(self.num1 / self.num2) # Driver's code with Divide(3, 1) as r: r.divide_by_zero() print("................................................") # will raise a ZeroDivisionError with Divide(3, 0) as r: r.divide_by_zero()
Producción:
Inside __enter__ 3.0 Inside __exit__ Execution type: None Execution value: None Traceback: None ................................................ Inside __enter__ Inside __exit__ Execution type: Execution value: division by zero Traceback: Traceback (most recent call last): File "gfg.py", line 32, in r.divide_by_zero() File "gfg.py", line 21, in divide_by_zero print(self.num1 / self.num2) ZeroDivisionError: division by zero
Publicación traducida automáticamente
Artículo escrito por shaikameena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA