Python: уроки, справочник и задачи

Замыкания в Python

Раздел: Функции Python · Обновлено 31.10.2026

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

Замыкания в Python
Фото: Wilfredor / CC0, Wikimedia Commons
Содержание статьи
  1. 1. Что такое замыкания?
  2. 2. Создание замыканий
  3. 3. Примеры использования
  4. 4. Преимущества замыканий
  5. 5. Особенности замыканий
  6. 6. Область видимости и замыкания
  7. 7. Замыкания и функциональное программирование

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

2. Создание замыканий

Пример создания замыкания:

def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function
closure = outer_function(10)
print(closure(5))  # Выводит 15

3. Примеры использования

Пример использования замыкания для инкапсуляции данных:

def counter():
    count = 0
    def increment():
        nonlocal count
        count += 1
        return count
    return increment
counter1 = counter()
print(counter1())  # Выводит 1
print(counter1())  # Выводит 2

4. Преимущества замыканий

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

5. Особенности замыканий

Пример использования замыкания для каррирования:

def multiply(x):
    def inner_multiply(y):
        return x * y
    return inner_multiply
double = multiply(2)
triple = multiply(3)
print(double(5))  # Выводит 10
print(triple(5))  # Выводит 15

6. Область видимости и замыкания

Пример изменения изменяемого объекта в замыкании:

def append_item():
    my_list = []
    def inner_append(item):
        my_list.append(item)
        return my_list
    return inner_append
append_func = append_item()
print(append_func('apple'))  # Выводит ['apple']
print(append_func('banana'))  # Выводит ['apple', 'banana']

7. Замыкания и функциональное программирование

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