contextmanager-async Contexto async with
Última atualização: 2026-09-22
contextmanager-async Contexto async with
async with é usado em gerenciadores de contexto assíncronos: tanto a entrada quanto a saída aguardam métodos assíncronos.
| Categoria | Palavras-chave e Instruções |
|---|---|
| Tipo | Palavra-chave / Instrução |
| Versão do Python | 3.5+ |
📝 Sintaxe
async with expr [as var]:
block
▶ Exemplo
Edite o código, clique em Executar e veja o resultado no painel de saída:
Saída:
Ctx
🏷️ Palavras-chave / Instruções relacionadas
💡 Casos relacionados
Mais estudos de caso em breve — aguarde.
❓ Perguntas frequentes
QQual é a diferença entre `async with` e um `with` normal?
A`async with` é para gerenciadores de contexto assíncronos: entrar e sair faz `await` nos métodos assíncronos `__aenter__` / `__aexit__`. Um `with` normal chama os síncronos `__enter__` / `__exit__`.
QPosso escrever `async with` dentro de uma função normal?
ANão. `async with` só pode aparecer dentro de uma função `async def`. Escrevê-lo numa função normal gera `SyntaxError: 'async with' outside async function`.
QComo minha própria classe pode suportar `async with`?
AImplemente dois métodos assíncronos: `async def __aenter__(self)` retornando o objeto de entrada, e `async def __aexit__(self, exc_type, exc, tb)` fazendo a limpeza. Retornar `True` de `__aexit__` engole a exceção; retornar `False` (ou nada) deixa propagar.