Курс 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. Очистка данных в Python
  2. Генерация случайных чисел Python
  3. Функция map() в Python
  4. Работа с очередями в Python
  5. Преобразование PowerPoint в PDF.
  6. Основы работы с os
  7. Логирование с Loguru
  8. Асинхронное программирование с asyncio
  9. Оптимизация параметров в Python
  10. Работа с кортежами
  11. Удаление первого элемента списка
  12. Отладка в Python
  13. Измерение времени выполнения кода с помощью time
  14. Оптимизация строк в Python
  15. Работа с набором данных CIFAR10 в PyTorch
  16. Вложенные циклы в Python
  17. Удаление элементов во время итерации
  18. Метод ipow для возведения в степень
  19. Функция enumerate() — Python
  20. Разделение строки на пары ключ-значение.
  21. Вывод переменной и строки в Python
  22. Генераторы в Python
  23. Многопроцессорное программирование в Python
  24. Функциональное программирование.
  25. Замыкания в Python
  26. Отношения подклассов в Python
  27. Перевод текста с Python Translator
  28. Улучшение читаемости кода в Python
  29. Уникальные значения из списка
  30. Справка по импортированным модулям
  31. Работа с датой и временем в Python
  32. Создание словарей в Python
  33. Оптимизация сравнения в Python
  34. Модуль future Python
  35. Операции с числами в Python
  36. Проверка надежности пароля на Python
  37. Поиск шаблона в начале строки
  38. Установка библиотек в Python
  39. Bootle — простой веб-фреймворк
  40. Функция reduce() из модуля functools
  41. Методы split() и join() — Python строк.
  42. Python Метод sleep() из time
  43. Тайное преобразование типа ключа
  44. Функции map, filter, reduce

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