Veintidós, con el 'gestor de contexto'

Los recursos del sistema, tales como archivos, bases de datos, conexiones de socket y así sucesivamente, abrir la aplicación después de completar estos recursos y ejecutar la lógica de negocio, que deben estar cerradas (off) los recursos, de lo contrario la situación serán ocupados recursos.

versión ordinaria del archivo abierto:

f = open ( " output.txt " , " w " ) 
f.write ( " pitón之禅" ) 
f.close ()

Utilice la forma intentarlo, excepto para abrir el archivo:

f = open ( " output.txt " , " w " )
     tratar : 
        f.write ( " pitón之禅" )
     excepto IOError:
         impresión ( " Vaya error " )
     finalmente : 
        f.close ()

Con el uso de documento abierto:

con (abierta " output.txt " , " r " ) como f: 
        f.write ( " Python之禅" )

  El valor de retorno se asigna al método abierto variables F, método cuando el bloque de código destruido, el sistema llama automáticamente f.close (), con el uso de efectos y try / finally es el mismo.

 

gestor de contexto

  Cualquier implementa el __enter __ () y el __exit método __ () puede ser llamado el administrador de objetos de contexto.

clase de archivos (): 

    def  __init__ (sí, nombre de archivo, modo): 
        self.filename = nombre del archivo 
        self.mode = modo de 

    def  __enter__ (self):
         print ( " entrar " ) 
        self.f = abierto (self.filename, self.mode )
         volver self.f 

    def  __exit__ (auto, * args):
         print ( " saldrá " ) 
        self.f.close ()

  __enter __ () devuelve un objeto de recurso, esto es lo que se quiere abrir el objeto de archivo de método, __ __ salida () para hacer frente a algunos trabajos de limpieza. Debido a que la clase File implementa el gestor de contexto, ahora se puede utilizar con un comunicado.

con archivos ( ' out.txt ' , ' w ' ) como f:
     print ( " escribir " ) 
    f.write ( ' hola, pitón ' )

  Esto elimina la necesidad de llamar al método cerca de la pantalla, para llamar automáticamente por el sistema, incluso si el medio de una excepción que se encuentre cerca del método será invocado.

Otra forma de conseguir un gestor de contexto

  ContextManager Python también proporciona un decorador, lo que simplifica aún más la aplicación del gestor de contexto. La función de rendimiento por dividido en dos partes, en la declaración se ejecuta antes de __enter__ método del rendimiento, la declaración después de rendimiento del proceso de la ejecución __exit__. Inmediatamente después del valor de rendimiento es el valor de retorno de la función de

de contextlib importación ContextManager 

@contextmanager 
def my_open (path, modo): 
    f = abierto (path, modo)
     rendimiento f 
    f.close ()

  llamada

con my_open ( ' out.txt ' , ' w ' ) como f: 
    f.write ( " hola, el gestor de contexto más simple " )

 

Supongo que te gusta

Origin www.cnblogs.com/nuochengze/p/12666088.html
Recomendado
Clasificación