Sobes.tech
Junior — Middle

არის საჭირო Python-ში კონტექსტის მენეჯერის განხორციელებისას გამოიყენოთ yield საკვანძო სიტყვა?

sobes.tech AI

პასუხი AI-სგან

კონტექსტის მენეჯერის განხორციელების დროს, თუ ის შექმნილია @contextmanager დეკორატორის გამოყენებით contextlib მოდულიდან, საჭიროა გამოიყენოს yield საკვანძო სიტყვა.

მაგალითი:

from contextlib import contextmanager

@contextmanager
def open_file(path):
    f = open(path, 'r')
    try:
        yield f  # მართვის და რესურსის გადაცემა
    finally:
        f.close()

აქ, yield კოდის ორ ნაწილად ყოფს: yield-ს წინ — რესურსის მომზადება, შემდეგ — გაწმენდა.

თუ, მეორე მხრივ, კონტექსტის მენეჯერი იმპლემენტირებულია კლასი __enter__ და __exit__ მეთოდებით, yield არ გამოიყენება.