Что такое замыкания в Python?
Замыкания в Python — это концепция из области функционального программирования. Замыкание происходит, когда внутренняя функция запоминает состояние своего лексического контекста в момент её создания, даже если внешняя функция, в которой она была объявлена, уже завершила свою работу.
Это означает, что внутренняя функция имеет доступ к переменным и именам в своем области видимости, когда она определяется, и может использовать эти переменные, даже после того, как область видимости, в которой она была создана, перестает существовать.
Основные характеристики замыкания:
Это означает, что внутренняя функция имеет доступ к переменным и именам в своем области видимости, когда она определяется, и может использовать эти переменные, даже после того, как область видимости, в которой она была создана, перестает существовать.
Основные характеристики замыкания:
- Должна быть вложенной функцией (функция внутри функции).
- Вложенная функция должна ссылаться на значение, определенное в области видимости внешней функции.
- Внешняя функция должна возвращать вложенную функцию.
Есть функция outer_func, которая принимает два аргумента - x,y. Внутри outer_func определим функцию inner_func и попробуем получить доступ к переменным из outer_func. Из этого примера мы видим, что внутренняя функция inner_func имеет доступ и к аргументам и переменным внешней функции outer_func. inner_func является замыканием.
def outer_func(x, y):
a = x * 2
b = y * 2
c = (x + y) * 100
def inner_func():
print(f"{x=}, {y=} from outer_func")
print(f"{a=}, {b=}, {c=} from outer_func")
z = a + b + c
print(f"{z=} from inner_func")
return inner_func
new_function = outer_func(3, 7)
new_function()
# x=3, y=7 from outer_func
# a=6, b=14, c=1000 from outer_func
# z=1020 from inner_func