Курс 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. Преобразование регистра символов
  3. Метод init в Python
  4. Объединение списков с помощью zip
  5. Отправка HTTP-запросов в Python
  6. Преобразование в float
  7. Python Enumerate
  8. Преобразование списка в словарь через генератор
  9. Сортировка элементов с OrderedDict
  10. Работа с изображениями PIL
  11. Изменения в обработке логических значений
  12. Работа с collections.Counter
  13. Удаление символов новой строки в Python.
  14. Python: отличительная особенность — отступы
  15. Улучшение читаемости кода в Python
  16. Подробная информация о %pinfo
  17. Создание списков в Python
  18. Операции с комплексными числами
  19. Работа с аргументами командной строки
  20. Применение функции к списку
  21. Конкатенация строк в Python
  22. Объединение списков с использованием itertools.chain
  23. Функции высшего порядка в Python
  24. Группировка элементов Python
  25. Поиск элементов BeautifulSoup
  26. Сравнение строк в Python
  27. Основные методы NumPy
  28. Комментарии в Python
  29. Antigravity модуль
  30. Распаковка элементов последовательности
  31. Вакансии в Nebius
  32. Ветвление выражения в Python
  33. Манипуляция формой массива в Numpy
  34. Метод pop() списка
  35. Передача аргументов в Python
  36. Быстрый поиск кода
  37. Python Ellipsis использование
  38. Обработка ошибок в JSON данных
  39. Транспонирование 2D-массива с помощью zip
  40. Метод __call__ в Python
  41. Оператор is в Python
  42. Использование двоеточия в Python
  43. Оптимизация гиперпараметров с Scikit Optimize
  44. Генераторы списков
  45. Получение текущей даты и времени

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