Junior — Middle
Milyen módon hoznak létre Pythonban olyan függvényeket, amelyek megőrzik a kontextust, és hogyan valósítják meg őket?
sobes.tech MI
Válasz az MI-től
Pythonban a kontextus megőrzésével rendelkező függvényeket általában lezárások (closures) és generátorfüggvények segítségével hozzák létre.
Lezárások — olyan függvények, amelyek "emlékeznek" a környező kontextus változóinak értékeire, még akkor is, ha ez a kontextus már kilépett a hatókörből.
Lezárás példája:
def make_multiplier(factor):
def multiplier(number):
return number * factor
return multiplier
times3 = make_multiplier(3)
print(times3(10)) # 30-at ír ki
Itt a multiplier függvény megőrzi a külső függvényből származó factor értékét.
Szintén használhatunk olyan objektumokat, amelyek __call__ metódussal rendelkeznek, a státusz megőrzéséhez.
class Multiplier:
def __init__(self, factor):
self.factor = factor
def __call__(self, number):
return number * self.factor
times3 = Multiplier(3)
print(times3(10)) # 30
Így a lezárások és az állapottal rendelkező objektumok lehetővé teszik a kontextus megőrzését a függvényhívások között.