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.
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 Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
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
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares

As diferenças de var, let e const

Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]

ChatGPT: o que é, como usar, dicas e como acessar login
ChatGPT é uma ferramenta de processamento de linguagem natural (NLP) baseada na arquitetura GPT-3.5, desenvolvida pela OpenAI. Sua criação representa um marco significativo no campo […]

