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 არ გამოიყენება.