Курс Python → Замыкания в Python

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

Однако, следует помнить, что использование замыканий может привести к сложностям в поддержке кода и его понимании. Если количество атрибутов и методов становится слишком большим, то лучше реализовать класс. Классы обеспечивают более явную структуру и иерархию, что упрощает работу с кодом в долгосрочной перспективе.

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


def create_id_generator():
    last_id = 0
    
    def generate_id():
        nonlocal last_id
        last_id += 1
        return last_id
    
    return generate_id

id_generator = create_id_generator()
print(id_generator())  # 1
print(id_generator())  # 2
print(id_generator())  # 3

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Комментарии в Python
  2. Функция zip() в Python
  3. Настройка вывода в Numpy
  4. Отладка в командной строке
  5. Отношения подклассов в Python
  6. Проверка дублей в списке.
  7. Методы shutil для работы с файлами
  8. Подсчет элементов в Python
  9. Создание словарей с defaultdict()
  10. Оператор == в Python
  11. Сортировка данных с лямбда-функциями
  12. Уникальные значения из списка
  13. Слияние словарей в Python 3.9
  14. Абстракции словарей и множеств в Python
  15. 9 уловок для чистого кода
  16. Бесконечные списки в Python
  17. Получение идентификатора объекта в памяти
  18. Подсчет частотности элементов в Python
  19. Поиск подстроки в строке
  20. Метод get для словаря
  21. Сумма элементов списка
  22. Defaultdict в Python
  23. Разделение функций на этапы
  24. Проверка индексов коллекции
  25. Обработка исключений
  26. Объединение списков в Python.
  27. Автоматизация с Python
  28. Удаление пробелов методом translate()
  29. Генераторы в Python
  30. Установка random seed в Python
  31. Проверка элемента в множестве.
  32. Counter() — подсчет элементов
  33. Работа с defaultdictами в Python
  34. Генерация резюме в Gensim
  35. Генерация случайных чисел в Python
  36. Циклы for в Python
  37. Распаковка с оператором *
  38. Сравнение def и lambda в Python
  39. Проверка условий в Python
  40. Фильтрация списка чисел
  41. Изменение элемента списка
  42. %pinfo: получение информации об объекте
  43. Представление бесконечности в Python
  44. Проверка переменных окружения в Python
  45. Метод join() для объединения элементов строки

Marketello читают маркетологи из крутых компаний