Курс Python → Мощь вложенных функций в Python

В Python вложенные функции могут быть мощным инструментом для организации кода и повышения его читаемости. Когда функция определена внутри другой функции, она может использовать переменные из области видимости внешней функции. Эти переменные образуют замыкание (closure), что позволяет сохранять состояние функции между вызовами.

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

def outer_function():
    x = 10
    
    def inner_function():
        nonlocal x
        x += 5
        print(x)
        
    inner_function()
    
outer_function()

В этом примере мы объявляем переменную x во внешней функции outer_function и изменяем ее значение во вложенной функции inner_function с помощью nonlocal. При вызове outer_function будет напечатано значение 15, так как x было увеличено на 5.

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

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

Автор урока

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

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

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

  1. %pinfo: получение информации об объекте
  2. Создание списков в Python
  3. Повторение элементов в Python
  4. Оптимизация памяти с slots
  5. Работа с модулем Calendar
  6. Функция map() и ленивая оценка
  7. Управление IP-адресами через прокси
  8. Отношения подклассов в Python
  9. Метод rsub для пользовательских чисел
  10. Метод сравнения объектов в Python
  11. Сравнение неупорядоченных списков
  12. Получение атрибутов и методов класса
  13. Подписка на SelectelNews в Twitter
  14. Concrete Paths — метод .with_suffix()
  15. Установка библиотек в Python
  16. Присвоение значений переменным в Python
  17. Работа с GitHub в Telegram
  18. Retrying в Python: повторные вызовы
  19. Функции классификации комплексных чисел
  20. Применение команды break
  21. Необязательные аргументы в Python
  22. Использование обратной косой черты в f-строках
  23. Изменение логики работы с временем
  24. Удаление символа из строки
  25. Упрощение работы с JSON-данными в Python
  26. Тестирование времени с Freezegun
  27. Многострочные комментарии в Python
  28. Распаковка элементов массива
  29. Оптимизация гиперпараметров в Python
  30. Создание копии итератора
  31. Генерация UUID в Python
  32. TypedDict для kwargs в Python 3.12
  33. Поиск шаблона в начале строки
  34. Подсчет частоты элементов с Counter
  35. Генераторы данных
  36. Сравнение def и lambda функций в Python
  37. Упрощенный вывод данных в Python
  38. Повторение и перенос строки
  39. Списки в Python: основы
  40. Обучение модели с указанием эпох
  41. Идентификатор объекта в Python
  42. Добавление кнопки в tkinter
  43. Объединение списков с помощью zip
  44. Оператор zip в Python
  45. Цикл for в Python

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