Sobes.tech
Junior — Middle

É necessário usar a palavra-chave yield dentro da implementação do gerenciador de contexto em Python?

sobes.tech IA

Resposta da IA

A palavra-chave yield deve ser usada dentro da implementação de um gestor de contexto se este for criado usando o decorador @contextmanager do módulo contextlib.

Exemplo:

from contextlib import contextmanager

@contextmanager
def open_file(path):
    f = open(path, 'r')
    try:
        yield f  # passa o controlo e o recurso
    finally:
        f.close()

Aqui, yield divide o código em duas partes: antes do yield — preparação do recurso, depois — limpeza.

Se, por outro lado, o gestor de contexto é implementado através de uma classe com métodos __enter__ e __exit__, então yield não é usado.