Sobes.tech
Junior — Middle

Pythonдо контекстти сактоо менен функцияларды кантип түзүү жана аларды кантип ишке ашыруу керек?

sobes.tech AI

AIден жооп

Pythonда контекстти сактоо функциялары адатта жабышмалар (closures) жана генератор функциялары аркылуу түзүлөт.

Жабышмалар — бул айлана-чөйрөдөгү өзгөрмөлөрдүн маанилерин "эсте калтырган" функциялар, анткени бул чөйрө ал дагы эле көрүү чегинен чыккан болсо да.

Жабышманын мисалы:

def make_multiplier(factor):
    def multiplier(number):
        return number * factor
    return multiplier

times3 = make_multiplier(3)
print(times3(10))  # 30 чыгарат

Бул жерде multiplier функциясы сырттагы функциядан factor маанисин сактайт.

Ошондой эле, __call__ методу менен объекттерди колдонуп, абал сактаса болот.

class Multiplier:
    def __init__(self, factor):
        self.factor = factor
    def __call__(self, number):
        return number * self.factor

times3 = Multiplier(3)
print(times3(10))  # 30

Мындайча айтканда, жабышмалар жана абалдуу объекттер функция чакыруулар арасында контекстти сактоого мүмкүндүк берет.