Sobes.tech
Junior — Middle

Milline Python'i võtmesõna kasutatakse kontekstihalduri määratlemiseks?

sobes.tech AI

Vastus AI-lt

Pythonis kasutatakse kontekstihalduri määratlemiseks võtmesõna with selle kasutamise ajal, ning oma kontekstihalduri loomisel rakendatakse tavaliselt klasse __enter__ ja __exit__ meetodeid.

Kuid, kui räägime funktsiooni deklaratsioonist kontekstihaldurina, kasutatakse @contextmanager dekoratsiooni contextlib moodulist.

Näide kontekstihalduri loomise kohta klassi abil:

class MyContextManager:
    def __enter__(self):
        print('Konteksti sisenemine')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('Kontekstist väljumine')

with MyContextManager():
    print('Kontekstis')

Näide kasutades @contextmanager:

from contextlib import contextmanager

@contextmanager
def my_context():
    print('Sisenemine')
    yield
    print('Väljumine')

with my_context():
    print('Sisemine')

Seega, võtmesõnad kontekstihalduritega töötamiseks on with (kasutamiseks) ning meetodid __enter__ ja __exit__ (määratlemiseks).