Замыкания
Содержание
Замыкание в Python - это функция, которая запоминает значения из внешней области видимости, даже если эта область видимости больше не существует. Таким образом, замыкание позволяет функции использовать переменные, которые были определены вне самой функции.
Пример:
def outer_func(x):
def inner_func(y):
return x + y
return inner_func
closure = outer_func(10)
result = closure(5)
print(result) # выводит 15
В этом примере outer_func
возвращает inner_func
, которая запоминает значение x
. Затем outer_func
вызывается, и возвращаемая функция сохраняется в closure
. Затем closure
вызывается с аргументом 5, и она использует сохраненное значение x (которое равно 10), чтобы вернуть результат 15.
Замыкания могут быть полезны для создания функций, которые сохраняют состояние между вызовами, а также для создания функций, которые могут быть адаптированы к различным сценариям использования, например для создания функций, которые возвращают другие функции в зависимости от переданных аргументов.
Ниже приведен другой пример замыкания, который возвращает функцию, которая будет умножать аргумент на заданное число:
def multiply_by(num):
def multiplier(n):
return n * num
return multiplier
double = multiply_by(2)
triple = multiply_by(3)
print(double(5)) # выводит 10
print(triple(5)) # выводит 15
В этом примере multiply_by
возвращает функцию multiplier
, которая запоминает значение num
. Затем мы вызываем multiply_by
два раза с аргументами 2 и 3 соответственно, и сохраняем возвращаемые функции в переменных double
и triple
.
Затем мы вызываем каждую из этих функций с аргументом 5, и каждая функция использует сохраненное значение num
(которое равно 2 для double
и 3 для triple
) для умножения аргумента и возврата результата.