Курс 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. discard() — удаление элемента из множества
  2. Сглаживание списка
  3. Обработка аргументов Python
  4. История Python
  5. Переопределение унарных операторов
  6. Применение функции к каждому элементу списка
  7. Красивый вывод списка
  8. Декораторы в Python
  9. Лямбда-функции в Python
  10. Работа с итераторами через срезы
  11. Ошибка NotImplemented в Python
  12. Повторение элементов списков
  13. Разбиение строки в Python
  14. Объединение словарей в Python
  15. Lambda-функция в Python: использование с map() и sum()
  16. Поиск HTML-элементов с BeautifulSoup
  17. Работа со временем в Python
  18. Генерация QR-кодов с Python
  19. Использование модуля __future__
  20. Замена текста с re.sub()
  21. Комментарии в Python
  22. Переворот последовательности
  23. Работа с модулем random
  24. Логические значения в Python
  25. Python Метод sleep() из time
  26. Docstring в Python
  27. Метод join() для объединения элементов строки
  28. Создание списков в Python
  29. Метод enumerate() в Python
  30. Перегрузка операторов в Python
  31. Метод __irshift__ для побитового сдвига вправо
  32. Генератор списка с условием if
  33. Добавление Progressbar в Python
  34. Списки: объединение, изменение
  35. Отладка производительности Python
  36. Перемещение и удаление файлов в Python
  37. Непрерывная проверка в Python
  38. Функции all и any в Python
  39. Встраивание HTML в Jupyter Notebook
  40. Библиотека wikipedia для Python
  41. Создание инструмента обнаружения плагиата
  42. Работа с буфером обмена на Python
  43. Метод ne для сравнения объектов
  44. Открытие, чтение и закрытие файла
  45. Работа с YAML в Python: PyYAML.
  46. Операторы увеличения и уменьшения переменной
  47. Закрытие файла в Python

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