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.