Sobes.tech
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.