Ответ
Замыкание (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.