A instrução with em profundidade
Entenda como with funciona e por que evita vazamentos de recursos.
A instrução with em profundidade é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
Introdução
Uso básico de with
with open('/tmp/cm_test.txt','w') as f:
f.write('hello')
print('file closed:', f.closed)Por que with existe
# Without with:
# f = open('f.txt')
# try: ...
# finally: f.close()
# With with:
# with open('f.txt') as f: ...
print('with is cleaner')Vários gerenciadores de contexto
import tempfile, os
a = tempfile.mktemp(); b = tempfile.mktemp()
with open(a,'w') as fa, open(b,'w') as fb:
fa.write('A'); fb.write('B')
os.unlink(a); os.unlink(b)
print('both closed')with não suprime exceções
try:
with open('/nonexistent.txt') as f:
pass
except FileNotFoundError as e:
print('caught:', e)Lock como gerenciador de contexto
import threading
lock = threading.Lock()
with lock:
print('locked section')
print('lock released')Padrão de conexão com banco de dados
# Typical DB pattern:
# with db.transaction() as conn:
# conn.execute(sql)
# commits on success, rolls back on exception
print('db pattern demo')Instruções with aninhadas
import tempfile
tmp = tempfile.mktemp()
with open(tmp,'w') as outer:
with open(tmp,'r+') as inner:
outer.write('x')
import os; os.unlink(tmp)
print('nested exit order')contextlib.suppress
from contextlib import suppress
with suppress(FileNotFoundError):
open('/does/not/exist.txt')
print('no error raised')contextlib.redirect_stdout
from contextlib import redirect_stdout
import io
buf = io.StringIO()
with redirect_stdout(buf):
print('captured')
print('got:', buf.getvalue())ExitStack
from contextlib import ExitStack
import tempfile, os
with ExitStack() as stack:
files = [stack.enter_context(open(tempfile.mktemp(),'w')) for _ in range(3)]
for f in files: f.write('x')
print('all closed')Verificação rápida
Recapitulação
Continue
Perguntas Frequentes
A aula “A instrução with em profundidade” é grátis?
Sim — o texto completo de “A instrução with em profundidade” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “A instrução with em profundidade”?
Entenda como with funciona e por que evita vazamentos de recursos. Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “A instrução with em profundidade”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- A instrução with em profundidade
- Protocolo __enter__ e __exit__
- contextlib: @contextmanager
- Padrões práticos de gerenciadores de contexto