Python · Intermediário · Inglês · Técnico
context manager
Objeto que define o que ocorre ao entrar e sair de um bloco with, via __enter__ e __exit__. Garante limpeza, como fechar arquivos ou liberar locks, mesmo com erro.
Onde usar
Aparece em open(), locks, conexões e transações. Num review, abrir recursos sem with é apontado, porque uma exceção pode deixar o recurso aberto.
Em código
class Aviso:
def __enter__(self):
print('entrou')
def __exit__(self, *erro):
print('saiu')
with Aviso():
print('dentro')Exemplos
Wrap the connection in a context manager.
Envolva a conexão em um context manager.
The context manager closes the file even if it fails.
O context manager fecha o arquivo mesmo se falhar.
Cuidado
Lembre que __exit__ pode engolir exceções: se devolver um valor verdadeiro, o erro é suprimido e o código segue adiante.
Sinônimos
gerenciador de contexto