Курс 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. Декоратор Property в Python
  2. Enum в Python: создание и использование перечислений
  3. Модуль math: константы π и e
  4. Очистка строки в Python
  5. Пустой оператор pass в Python
  6. Функция eval() в Python
  7. Работа с функцией next() в Python
  8. Оптимизация памяти с __slots__
  9. Подсчет элементов в Python
  10. Mad Libs Generator
  11. Операции с массивами в NumPy
  12. Очистка данных с Pandas
  13. Управление экспортом элементов
  14. Декоратор проверки активности
  15. Названия столбцов в Python таблицах
  16. Лямбда-функции в Python
  17. Работа с файлами в Python
  18. Работа со стеком в Python
  19. Списковый компрехеншен.
  20. Принципы SRP и OCP
  21. Многострочные строки в Python
  22. Оператор «моржа» (Walrus Operator)
  23. Сортировка с помощью key
  24. Модуль Operator в Python
  25. Библиотека Rich: форматирование текста
  26. Генераторы в Python
  27. Преобразование текста в нижний регистр
  28. Объединение словарей в Python
  29. 9 уловок для чистого кода
  30. Python: изменяемые и неизменяемые коллекции
  31. Удаление специальных символов
  32. Структурирование данных с Pydantic
  33. Форматирование строк в Python
  34. История Python
  35. Создание графиков в терминале
  36. Работа с комплексными числами
  37. Структура строк в Python
  38. Настройка шрифта и цвета в Tkinter
  39. Обработка ошибки IndexError
  40. Инициализация структур данных
  41. Частичное совпадение ввода
  42. Нахождение разницы между списками в Python
  43. Оптимизация памяти в Python
  44. Класс UserDict: дополнительная функциональность
  45. Оператор «not» в Python
  46. Логические значения в Python
  47. Кортежи в Python: особенности и преимущества

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