with Gerenciamento de contexto
Última atualização: 2026-09-22
with Gerenciamento de contexto
A instrução with chama os métodos __enter__ / __exit__ do gerenciador de contexto ao entrar e sair do bloco de código; é comumente usada para arquivos/locks/conexões.
| Categoria | Palavras-chave e Instruções |
|---|---|
| Tipo | Palavra-chave / Instrução |
| Versão do Python | all |
📝 Sintaxe
with expr [as target]:
block
▶ Exemplo
Edite o código, clique em Executar e veja o resultado no painel de saída:
Saída:
closed: True
💡 Dica with é mais claro que try/finally e é a forma oficialmente recomendada de gerenciamento de recursos.
💡 Casos relacionados
Mais estudos de caso em breve — aguarde.
❓ Perguntas frequentes
QDepois de abrir um arquivo com `with`, ainda preciso fechá-lo manualmente?
ANão. `with` chama automaticamente o `close()` do arquivo (via `__exit__`) ao sair do bloco, mesmo que uma exceção seja levantada no meio. Essa é a forma oficialmente recomendada de gerenciar recursos.
QO `with` pode gerenciar vários recursos ao mesmo tempo?
ASim. Python 3.10+ permite `with (open(a) as f1, open(b) as f2):`. Em versões antigas, use `with` aninhado ou gerencie dinamicamente com `contextlib.ExitStack`.
QA variável `as` depois do `with` ainda pode ser usada fora do bloco?
AO nome da variável ainda é acessível (Python não tem escopo de bloco), mas o recurso já está fechado. Por exemplo, ler ou escrever um arquivo fora do `with` gera `ValueError: I/O operation on closed file`.