Курс Python → Замыкания в Python

Замыкания — это функции, которые запоминают окружение, в котором они были созданы, и могут получать доступ к переменным из этого окружения даже после того, как функция уже была завершена. Они позволяют создавать локальные области видимости для переменных, что делает код более чистым и понятным. Кроме того, замыкания позволяют передавать функции в качестве аргументов и возвращать их из других функций, что делает код более гибким.

Одним из основных случаев использования замыканий является избегание использования глобальных переменных. Вместо того чтобы делать переменные глобальными и рисковать конфликтами имён, можно использовать замыкания для создания локальных переменных, которые будут доступны только внутри функции. Это способствует изоляции данных и предотвращает нежелательные побочные эффекты.

Еще одним случаем использования замыканий является обеспечение сокрытия данных. Путем создания замыкания с внутренней функцией, которая имеет доступ к «скрытым» переменным, можно реализовать инкапсуляцию данных. Это позволяет скрыть детали реализации и предоставить только необходимый интерфейс для взаимодействия с данными.


def make_multiplier(x):
    def multiplier(y):
        return x * y
    return multiplier

double = make_multiplier(2)
triple = make_multiplier(3)

print(double(4))  # Вывод: 8
print(triple(5))  # Вывод: 15

Пример выше демонстрирует использование замыкания для создания функций, которые умножают переданное число на заданное значение. Функция make_multiplier создает замыкание, которое запоминает значение x и возвращает функцию multiplier, которая умножает x на переданное значение y. Таким образом, мы можем создать несколько функций с разными множителями на основе одного общего шаблона.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Методы в Python
  2. Создание виртуальной среды
  3. Структура данных deque в Python
  4. Поиск с помощью регулярных выражений
  5. Изменение элемента списка
  6. Именованные кортежи в Python
  7. Оптимизация памяти с slots
  8. Переменная Шредингера
  9. Работа с контекст-менеджером «with»
  10. Сложные типы данных в Python
  11. Импорт модулей в Python 3.12
  12. Работа с областями видимости переменных
  13. JSON в Python: модуль, dump, dumps, load
  14. Список импортированных модулей в Python
  15. Копирование и вставка текста в Python
  16. Проверка типов с помощью isinstance
  17. Настройка нарезки списков
  18. Работа с коллекциями Python
  19. Проверка условий: all и any
  20. Оптимизация методов в Python 3.7
  21. Concrete Paths — метод .with_suffix()
  22. Класс UserDict: дополнительная функциональность
  23. Операторы увеличения и уменьшения в Python
  24. Генерация QR-кодов с Python
  25. Принцип одной функции
  26. kwargs в Python
  27. Создание панели меню Tkinter
  28. Модуль inspect: получение информации о объектах
  29. Применение промокода в Много лосося
  30. Docstring в Python
  31. Python и Юникод: работа с цифрами
  32. Работа с timedelta
  33. Протокол управления контекстом
  34. Модуль xkcd: загрузка комиксов
  35. Итерация по копии коллекции
  36. Создание функций высшего порядка
  37. Декоратор @override
  38. Оператор zip в Python
  39. Форматирование строк в Python.
  40. Округление дробей в Python
  41. Карта бомбоубежищ в Москве и Питере
  42. Регулярные выражения: метод match
  43. Форматирование данных с помощью pprint
  44. Руководство по использованию Colorama
  45. Руководство по библиотеке pydantic
  46. Декораторы классов
  47. None в Python: использование и особенности

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