Sobes.tech
Junior

Adj egy példát a Python-ban használt kontextuskezelő használatára.

sobes.tech MI

Válasz az MI-től

# Fájl megnyitása:
# A kontextuskezelő használata garantálja a fájl automatikus bezárását,
# még akkor is, ha kivétel történik.
with open('my_file.txt', 'w') as f:
    # Adatok írása a fájlba
    f.write('Hello, world!\n')
    f.write('Ez egy teszt.')

# Saját kontextuskezelő létrehozása osztály segítségével:
class ManagedResource:
    def __enter__(self):
        print('Erőforrás kiosztva')
        # Visszaadhat egy objektumot, amit az 'as' után rendelnek hozzá
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('Erőforrás felszabadítva')
        # Kezelheti a kivételeket. A True visszatérés elnyomja a kivételt.
        return False

# A létrehozott kontextuskezelő használata:
with ManagedResource() as res:
    print('Erőforrással dolgozunk')
    # res - az __enter__ által visszaadott objektum

# Saját kontextuskezelő létrehozása a contextmanager dekorátor segítségével:
from contextlib import contextmanager

@contextmanager
def efficient_resource():
    print('Hatékony erőforrás kiosztva')
    try:
        yield 'Hatékony erőforrás' # Visszaadott objektum
    finally:
        print('Hatékony erőforrás felszabadítva')

# A dekorátorral ellátott kontextuskezelő használata:
with efficient_resource() as eff_res:
    print(f'Használat: {eff_res}')