Курс 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. Основы работы с базами данных в Python
  2. Модуль xkcd: добавление юмора в Python
  3. Управление импортом в Python
  4. Импорт модулей в Python 3.12
  5. Работа с областями видимости переменных
  6. Разделение строки на пары ключ-значение.
  7. CLI-инструмент howdoi
  8. Измерение времени выполнения кода в Python
  9. Виртуальное окружение Python
  10. Работа с аргументами командной строки в Python
  11. Модуль itertools: эффективная работа с итераторами
  12. Удаление символа из строки
  13. Сериализация данных в JSON с помощью json.dumps
  14. Получение частей дроби
  15. История Python
  16. Оператор Walrus в Python 3.8
  17. Поиск простых чисел
  18. Проверка запуска скрипта или импорта модуля
  19. Отслеживание выполнения программы с библиотекой tqdm
  20. Defaultdict в Python
  21. Python enumerate() функции
  22. Исправление ошибки NameError
  23. Установка пакета в Python
  24. Работа с множествами в Python
  25. Python и Монти Пайтон
  26. Переворот строки с помощью срезов
  27. Группы исключений в Python
  28. Взаимодействие с внешними процессами в Python
  29. Обезопасьте ввод данных
  30. Сортировка HTML по CSS-селектору
  31. Создание новых функций с помощью functools.partial
  32. Установка и обучение ChatterBot
  33. Капитализация строк
  34. Переменные в Python: сокращение гласных
  35. Обход дочерних элементов BeautifulSoup
  36. Установка и использование Logzero
  37. Асинхронный код в Python
  38. Конвертация коллекций в Python.
  39. Метод get() в Python
  40. Метод сравнения объектов в Python
  41. Управление экспортом элементов
  42. Конкатенация списков в Python
  43. Основы Python
  44. Удаление символа из строки

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