Курс 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. Использование модуля __future__
  2. Поиск самого частого элемента
  3. Замена текста в Python
  4. Тестирование функции сложения
  5. Вычисление фазы комплексного числа
  6. Измерение потребления памяти при сортировке
  7. Создание генераторов
  8. Лямбда-функции в defaultdict
  9. Метод __iand__ для пользовательских классов
  10. Возвращение нескольких значений
  11. Поиск шаблона в начале строки
  12. Генерация чисел с range()
  13. Поиск анаграмм с Counter
  14. Комментарии в Python
  15. Простой калькулятор Python
  16. %pinfo: получение информации об объекте
  17. Объединение словарей в Python
  18. Оформление кода на Python
  19. Особенности множеств в Python
  20. Логирование с Logzero
  21. Просмотр атрибутов и методов класса
  22. Регистрация на хакатоне
  23. Считывание бинарного файла в Python
  24. Antigravity модуль
  25. Запрос DELETE с библиотекой requests
  26. Форматирование строк в Python
  27. Комплексные числа в Python
  28. Поиск наиболее частого элемента списке
  29. Повторение элементов списков
  30. Функция map() и ленивая оценка
  31. Работа с набором данных CIFAR10 в PyTorch
  32. Рациональные числа в Python
  33. Получение списка файлов в директории с использованием os
  34. Инвертирование словаря
  35. Вывод переменной и строки в Python
  36. Функция pow() — возвести число в степень
  37. Применение функций в Python
  38. Python: Splat-оператор и splatty-splat
  39. Основные операции с библиотекой Numpy
  40. Работа с аргументами командной строки в Python
  41. Форматирование данных с pprint
  42. Поиск элементов BeautifulSoup
  43. Вложенные генераторы в Python
  44. Показ всплывающих окон Tkinter

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