__salir__ en Python

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 ContextManagerclase. 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

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *