Ответ
Замыкание (closure) в Python — это функция, которая запоминает и сохраняет доступ к переменным из своей внешней (охватывающей) области видимости, даже после того как внешняя функция завершила свое выполнение. Это позволяет внутренней функции использовать эти переменные в дальнейшем.
Почему это полезно? Замыкания позволяют создавать функции с предустановленными параметрами или состояниями. Они часто используются для:
- Создания фабрик функций.
- Реализации декораторов.
- Обработчиков событий (callback-ов).
- Эмуляции приватных переменных.
Пример:
def outer_func(x):
# x - переменная из внешней области видимости
def inner_func(y):
# inner_func "замыкает" x
return x + y
return inner_func
# Создаем замыкание, где x = 10
closure = outer_func(10)
# Вызываем замыкание с новым аргументом y = 5
print(closure(5)) # Выведет 15
В этом примере inner_func
сохраняет доступ к значению x=10
из outer_func
, даже после того как outer_func
завершила работу и вернула inner_func
. При вызове closure(5)
используется сохраненное x
и переданное y
.