Курс 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. Метод lt для сортировки объектов
  2. Зарезервированные слова в Python
  3. Lambda-функция в Python: использование с map() и sum()
  4. Присоединение элементов коллекции
  5. Условные выражения в Python
  6. Скачать видео с YouTube
  7. Игра Виселица на Python
  8. Оптимизация гиперпараметров с Scikit Optimize
  9. Измерение времени выполнения кода с использованием time
  10. Преобразование символов в нижний регистр
  11. Оформление кода на Python
  12. Работа с парами ключ-значение
  13. Уникальные значения из списка
  14. Метод ior для битовых операций
  15. Управление доступом к модулю
  16. Замена текста с помощью sub
  17. Модуль subprocess: запуск внешних команд
  18. Потоковый ввод в Python
  19. Howdoi — получение ответов из терминала
  20. Проверка существования переменной с оператором :=
  21. Python: Splat-оператор и splatty-splat
  22. Многоточие в Python
  23. Пересечение списков с использованием множеств
  24. Рекурсия для обращения строки
  25. Копирование файлов с shutil()
  26. Списковое включение в Python
  27. Функция с **kwargs в Python
  28. Улучшение читаемости кода в Python
  29. Перевернуть список в Python
  30. Операции с числами в Python
  31. Избегайте использования goto
  32. Оператор in для проверки наличия элемента
  33. Возврат нескольких значений
  34. Обработка элементов в Python
  35. Генератор чисел Фибоначчи
  36. Изменение элемента списка
  37. Удаление URL-адресов в Python
  38. Форматирование даты с strftime()
  39. Замыкания в Python
  40. Модуль pprint
  41. Именованные аргументы в Python
  42. Импорт объектов из модулей
  43. Создание словаря и множества
  44. Цепные операции в Python
  45. Обмен переменными в Jupyter

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