Sobes.tech
Junior — Middle

Kura Python atslēgas vārds tiek izmantots konteksta pārvaldnieka definēšanai?

sobes.tech AI

Atbilde no AI

Pythonā konteksta pārvaldnieka definēšanai izmanto atslēgvārdu with tā lietošanas laikā, un, lai izveidotu savu konteksta pārvaldnieku, parasti tiek izmantotas metodes __enter__ un __exit__ klasē.

Tomēr, ja runa ir par funkcijas deklarēšanu kā konteksta pārvaldnieka, tiek izmantots dekorators @contextmanager no moduļa contextlib.

Piemērs, kā izveidot konteksta pārvaldnieku ar klasi:

class MyContextManager:
    def __enter__(self):
        print('Ieeja kontekstā')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('Iziešana no konteksta')

with MyContextManager():
    print('Iekš konteksta')

Piemērs ar @contextmanager:

from contextlib import contextmanager

@contextmanager
def my_context():
    print('Ieeja')
    yield
    print('Izieja')

with my_context():
    print('Iekšā')

Tādēļ galvenās atslēgvārdi darbam ar konteksta pārvaldniekiem ir with (lietošanai) un metodes __enter__ un __exit__ (definēšanai).