Курс 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. Оптимизация создания строк
  3. Возврат нескольких значений
  4. Сериализация данных в JSON с помощью json.dumps
  5. Регулярные выражения в Python
  6. Функциональное программирование.
  7. Атрибуты класса и экземпляра
  8. Сортировка в Python
  9. Работа со словарями в Python
  10. Округление дробей в Python
  11. Область видимости переменных
  12. Разделение списка на гнппы
  13. Руководство по использованию Colorama
  14. Работа с f-строками 2.0
  15. Создание и обучение модели с Keras
  16. Однострочники Python
  17. Векторизация в Python с NumPy.
  18. Создание словарей с defaultdict()
  19. Создание словарей и множеств в Python
  20. Python: Фильтрация списков с помощью filter()
  21. F-строки в Python
  22. Создание .exe файла с pyinstaller
  23. Создание копии итератора
  24. Работа с множествами в Python
  25. Замена текста с помощью sub
  26. Список методов и атрибутов
  27. Удаление дубликатов в pandas
  28. Создание спинбокса в tkinter
  29. Оператор «not» в Python
  30. Замена атрибута в именованном кортеже
  31. Улучшение читаемости кода в Python
  32. Работа с JSON данными в Python
  33. Оптимизация строк в Python
  34. Библиотека sh: использование команд bash в Python
  35. Установка и обучение ChatterBot
  36. Автоматизация скриптов на AWS Lightsail.
  37. Лямбда-функции в цикле
  38. Работа с изображениями Pillow
  39. Работа с комплексными числами
  40. Добавление элементов в список
  41. Передача аргументов через **arguments
  42. Именованные аргументы в Python
  43. Удаление элемента из списка в Python
  44. Бесконечные списки в Python
  45. Деление в Python
  46. Обновление шаблона base.html

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