Вопрос №39
Осталось:
Что такое замыкание в Python?
Образцовый ответ
Показывать ответ по умолчанию
Замыкание — это вложенная функция, которая «запоминает» переменные из внешней функции, даже после того как внешняя функция завершилась.
Как это работает:
def make_multiplier(factor): def multiply(number): return number * factor # factor «захвачен» из внешней функции return multiply double = make_multiplier(2) triple = make_multiplier(3) print(double(5)) # 10 print(triple(5)) # 15
Условия для замыкания:
- Есть вложенная функция.
- Вложенная функция использует переменные из внешней функции.
- Внешняя функция возвращает вложенную функцию.
Практические примеры:
# Счётчик def make_counter(start=0): count = start def counter(): nonlocal count count += 1 return count return counter c = make_counter() print(c()) # 1 print(c()) # 2 print(c()) # 3 # Логгер def make_logger(prefix): def log(message): print(f"[{prefix}] {message}") return log error_log = make_logger("ERROR") error_log("Файл не найден") # [ERROR] Файл не найден
