Para que serve o with no Python? como utilizar?

Neste artigo vamos ver para que serve o with no Python, uma instrução que é utilizada para deixar o código mais limpo e legível.

para que serve o with no python capa

Fala programador(a), beleza? Bora aprender mais sobre Python!

A instrução with é utilizada para garantir a finalização de recursos adquiridos.

Por exemplo: quando um arquivo é aberto, podemos utilizar try e finally, para fazer a execução da nossa lógica e depois fechar o arquivo

Porém alguns erros de código poderiam resultar em uma não execução da instrução de fechar o arquivo, fazendo com que os recursos ainda ficassem alocados a ele

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 116 aulas
  • 4 projetos
  • 9h 23min

Por isso, foi providenciada a instrução with, que realiza esta mesma operação de forma simples, que garante o encerramento dos recursos alocados

Vejamos na prática a comparação das duas ideias:

# com try e finally
try:
  f = open("teste.txt", "w")
  f.write("Testando escrita")
finally:
  f.close()

# com with
with open("teste2.txt", "w") as f:
  f.write("Testando escrita com with")

Veja que com with utilizamos menos linhas, ou seja, código pythonico

Além disso garantimos que os recursos para abrir o arquivo sejam retornados a máquina

A versão com with torna desnecessário justamente o f.close() por causa disso, ao fim da instrução o arquivo será fechado

Conclusão

Neste artigo vimos para que serve o with no Python

A instrução nos vai poupar código, perceba que não precisamos mais fechar os arquivos

E ela justamente atua nesse sentido, de simplificar as coisas e retornar os recursos alocados com certeza a máquina

Nos prevenindo de eventuais erros de lógica ou do programa

Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube

Dá pra abrir mais de um arquivo com with?

Dá sim, e sem precisar aninhar um with dentro do outro

Você separa os recursos por vírgula na mesma linha e o Python fecha todos quando o bloco termina

with open("entrada.txt", "r") as origem, open("saida.txt", "w") as destino:
conteudo = origem.read()
destino.write(conteudo)

Os dois arquivos são encerrados sozinhos ao fim do bloco, mesmo que role algum erro no meio

Bem mais limpo que abrir, tratar e fechar cada um na mão, né?

O que o with faz por trás? (context manager)

Aqui vem o porquê da coisa

O with trabalha com o que a gente chama de context manager

Todo objeto que funciona com with tem dois métodos: um que roda ao entrar no bloco (__enter__) e outro que roda ao sair (__exit__)

‘E o que isso muda pra mim?’ Muda que a limpeza, fechar o arquivo, liberar o recurso, fica garantida na saída, deu erro ou não deu

Por isso o with não serve só pra arquivo: conexão de banco, trava de thread e várias outras coisas usam esse mesmo padrão

Perguntas frequentes sobre o with

O with substitui o try e finally?

Na prática de fechar recursos, sim

O with já garante o encerramento pra você, então some aquele finally só pra dar f.close()

Preciso usar with só com arquivos?

Não

Arquivo é o caso mais comum de aprender, mas qualquer objeto que seja um context manager funciona com with

E se der erro dentro do bloco with?

O recurso é fechado do mesmo jeito

É exatamente pra isso que ele existe: garantir a limpeza mesmo quando algo quebra no meio do caminho

Leia também

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares