Курс 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. Объединение строк с помощью метода join
  2. Преобразование чисел в восьмеричную строку
  3. Вставка переменных в шаблоны Flask
  4. Работа с zip-архивами в Python
  5. Работа с NumPy.linalg
  6. Оператор is в Python
  7. Лямбда-функции в Python
  8. Управление ресурсами с контекстными менеджерами
  9. Установка Python — Простое руководство
  10. Создание и инициализация объектов
  11. Работа с файлами в Python
  12. Измерение времени выполнения кода в Python
  13. Создание матрицы в Python
  14. Обмен переменными в Jupyter
  15. Форматирование строк в Python
  16. Особенности множеств в Python
  17. Фильтрация входных данных в Python
  18. Распаковка аргументов в Python
  19. Сортировка списка по индексам
  20. Использование двоеточия в Python
  21. Python reversed() vs срез[::-1]
  22. Отладчик pdb: начало работы
  23. List Comprehension Tutorial
  24. Обработка исключений с блоком else
  25. Выражения-генераторы в Python
  26. Применение функций в Python
  27. Обработка StopIteration в Python
  28. Печать комбинаций в Python с Itertools
  29. Необязательные аргументы в Python
  30. Особенности ключей словаря в Python
  31. Ускоренный импорт библиотек
  32. Искажение имен в Python
  33. Извлечение данных из JSON
  34. Функция enumerate() в Python
  35. Чтение бинарного файла в Python.
  36. Генерация UUID в Python
  37. Итерация по коллекции в Python
  38. Numpy: разбиение массивов
  39. Beautiful Soup — извлечение данных из HTML
  40. Преобразование чисел в слова
  41. Проверка подстроки в строке
  42. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  43. Обход элементов в Python
  44. Big O оптимизация
  45. Сериализация данных в JSON с помощью json.dumps
  46. Лимиты на ресурсы Python
  47. Генераторы данных

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