Python Tutorial

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

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

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

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

Основные характеристики замыкания:

  1. Должна быть вложенной функцией (функция внутри функции).
  2. Вложенная функция должна ссылаться на значение, определенное в области видимости внешней функции.
  3. Внешняя функция должна возвращать вложенную функцию.
Есть функция 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
Декораторы