Search
Close this search box.
Gerenciadores de contexto em Python
gerenciadores de contexto

Posts Relacionados:

Em Python, os gerenciadores de contexto permitem administrar recursos de maneira limpa e controlada e garantir que eles sejam adequadamente alocados.

Receba nossa newsletter

Gerenciadores de contexto em Python

gerenciamento de recursos

Um problema comum em programação é como gerenciar corretamente recursos externos, como arquivos e conexões de rede. Às vezes, um programa retêm recursos alocados, mesmo quando eles não são mais necessários. Esse tipo de problema é chamado de vazamento de memória. A memória disponível é reduzida toda vez que uma nova instância de um determinado recurso é criada e aberta sem fechar uma existente. Para evitar esse tipo de cenário, os gerenciadores de contexto são fundamentais. 

Gerenciadores de contexto em Python são particularmente úteis para garantir que os recursos sejam adequadamente alocados e liberados, mesmo quando ocorrem exceções.

Em Python, existem duas abordagens gerais para lidar com o gerenciamento de recursos. Uma delas envolve encapsular os códigos em blocos try/except/finally. Embora essa abordagem funcione para muitos casos, ela é genérica e não é a mais acurada para tarefas de gerenciamento e alocação de recursos. A outra abordagem mais direta envolve o uso da instrução with. Sua sintaxe básica é mostrada abaixo:

				
					
with expressão [as variável]:
    # bloco de código
				
			

Entenda como a instrução with prossegue

Internamente, Python define o protocolo do gerenciador de contexto usando dois métodos especiais: __enter__() e __exit__(). Eles são chamados no início e no final do bloco da instrução with, respectivamente.

O método __enter__() é chamado quando a instrução with é encontrada. Normalmente, ele é usado para alocar recursos e retornar um valor que pode ser usado dentro do bloco. O valor retornado por ele (se houver) é atribuído à variável especificada na instrução with. Quando o bloco de código termina a execução (ou se uma exceção é gerada), o método __exit__() é chamado. Esse método é responsável por limpar ou liberar os recursos adquiridos, independentemente de ter ocorrido uma exceção ou não.

Instrução with em código

Entenda como usar with para gerenciamento de contexto com um exemplo ilustrativo. Abaixo, criamos um arquivo sem o uso da instrução with. O problema desse tipo de procedimento é que o arquivo não será fechado se uma exceção for gerada.

				
					# abertura e fechamento de um arquivo sem gerenciamento de contexto

file = open("oi.txt", "w") # abre um novo arquivo
file.write("Oi, mundo com Python!") # escreve no arquivo 
file.close() # fecha o arquivo, se houver um erro acima, o fechamento do arquivo não será realizado corretamente 

				
			

No exemplo abaixo, executamos a mesma operação, mas usando with. Com seu uso, garantimos o gerenciamento correto de recursos mesmo quando uma exceção ocorre.

				
					# gerenciamento de contexto com a instrução with
with open("oi.txt", "w") as file:
    file.write("Oi, mundo com Python!") 

				
			

Portanto, mesmo quando um programa encontra uma exceção, a instrução with garante a alocação correta dos recursos.

Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.

Imagem com IA Generativa – Dia 102

IA generativa img102

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial