Junior — Middle
Da li je potrebno koristiti ključnu reč yield unutar implementacije menadžera konteksta u Pythonu?
sobes.tech АИ
Одговор од АИ
Ključna reč yield mora biti korišćena unutar implementacije menadžera konteksta ako ga kreirate pomoću dekoratora @contextmanager iz modula contextlib.
Primer:
from contextlib import contextmanager
@contextmanager
def open_file(path):
f = open(path, 'r')
try:
yield f # prenosimo kontrolu i resurs
finally:
f.close()
Ovde, yield deli kod na dva dela: pre yield — priprema resursa, posle — čišćenje.
Ako je, umesto toga, menadžer konteksta implementiran putem klase sa metodama __enter__ i __exit__, yield se ne koristi.