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}')