Курс 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. Печать месячного календаря
  2. kwargs в Python
  3. Определение функций с необязательными аргументами
  4. Регистрация на TenChat
  5. Оператор is в Python
  6. Замеры производительности в Python
  7. Изменение переменной в Python: nonlocal
  8. Курс Data Scientist в медицине
  9. Оператор «is not» в Python
  10. Генерация случайных чисел в Python
  11. Декораторы классов
  12. Модуль math: основные функции
  13. Отладка регулярных выражений в Python
  14. Возвращение нескольких значений через кортеж или класс
  15. Работа с аргументами командной строки в Python
  16. Работа с изменяемыми коллекциями
  17. Сортировка элементов с OrderedDict
  18. Эффективная конкатенация строк с использованием join()
  19. Форматирование строк с f-строками
  20. Python Метод sleep() времени
  21. Списки в Python
  22. Повторение элементов списков
  23. Операции со строками в Python
  24. Библиотека funcy: удобные утилиты
  25. Использование двоеточия в Python
  26. Поиск наиболее частого элемента
  27. Работа с дробями в Python
  28. Операторы объединения в Python 3.9
  29. Работа с множествами в Python
  30. None в Python: использование и особенности
  31. Генерация случайных чисел в Python
  32. Определение индекса элемента списка
  33. Python Ellipsis использование
  34. Работа с CSV файлами в Python
  35. Дефолтные параметры в Python
  36. Оператор walrus в Python
  37. Деление в Python
  38. Преобразование объекта в строку
  39. Область видимости переменных
  40. GitHub в Telegram: подписка на уведомления
  41. Декораторы с аргументами в Python
  42. Фильтрация последовательности

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