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
Мындайча айтканда, жабышмалар жана абалдуу объекттер функция чакыруулар арасында контекстти сактоого мүмкүндүк берет.