← Назад ко всем вопросам

Что такое замыкания?

1️⃣ Как кратко ответить

Замыкание в Python — это функция, которая запоминает значения из своей внешней области видимости, даже если эта область видимости уже завершила выполнение. Это позволяет функции использовать переменные, которые были доступны в момент её создания, даже после выхода из этой области видимости.

2️⃣ Подробное объяснение темы

Замыкания полезны, когда нужно сохранить состояние между вызовами функции без использования глобальных переменных или классов. Они позволяют создавать функции с "памятью", что может быть полезно для создания фабрик функций, декораторов и других паттернов проектирования.

Как работают замыкания?

Когда функция определена внутри другой функции, она имеет доступ к переменным внешней функции. Если внутренняя функция возвращается и используется за пределами внешней функции, она сохраняет доступ к этим переменным. Это и есть замыкание.

Пример замыкания

Рассмотрим пример, чтобы понять, как работают замыкания:

def outer_function(x):
    # Внешняя функция, которая принимает один аргумент x
​
    def inner_function(y):
        # Внутренняя функция, которая принимает один аргумент y
        return x + y
        # Возвращает сумму x и y
​
    return inner_function
    # Возвращает внутреннюю функцию

В этом примере outer_function возвращает inner_function. Когда inner_function вызывается, она имеет доступ к переменной x, даже если outer_function уже завершила выполнение.

Использование замыкания

add_five = outer_function(5)
# Создаём замыкание, где x = 5
​
result = add_five(10)
# Вызываем замыкание с y = 10
​
print(result)  # Вывод: 15
# Результат — сумма 5 и 10
  • outer_function(5) создаёт замыкание, где x равно 5.
  • add_five(10) вызывает внутреннюю функцию с y равным 10.
  • Внутренняя функция возвращает сумму x и y, то есть 15.

Тема: Python
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки