Курс 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. Форматирование чисел в Python
  3. Модуль sys: основы
  4. Функция zip() в Python
  5. Хешируемые ключи в Python
  6. Итераторы в Python
  7. Декораторы в Python
  8. Расширение информации об ошибке в Python
  9. Частичное совпадение пользовательского ввода в Python 3.10
  10. Выражения-генераторы в Python
  11. Работа с CSV файлами в Python
  12. Копирование и вставка текста в Python
  13. Упрощение условных выражений с тернарным оператором
  14. Модуль subprocess: запуск внешних команд
  15. Измерение времени выполнения кода
  16. История Python
  17. Numpy: разбиение массивов
  18. Вызов функций по строке в Python.
  19. Подсказки типов в Python
  20. Парсинг статей с Newspaper3k
  21. Работа со строками
  22. Python Метод sleep() времени
  23. Виртуальные среды в Python
  24. Асинхронное выполнение задач в Python
  25. Округление в Python
  26. Пустой оператор pass в Python
  27. Хранение данных с помощью dataclasses
  28. Объединение множеств в Python
  29. Преобразование данных в Python
  30. Обучение модели с указанием эпох
  31. Оптимизация памяти с __slots__
  32. Разбиение текста в Python
  33. Ускорение выполнения кода в Python
  34. Работа с классами данных
  35. Описание скриптов в README
  36. Генераторы данных
  37. Возврат нескольких значений
  38. Проектирование Singleton с метаклассом
  39. Множества и frozenset
  40. Поиск наиболее частого элемента списке
  41. Оператор in для проверки наличия элемента
  42. Определение относительного пути
  43. Итераторы с потерямиZIP
  44. Метод join() для объединения элементов строки
  45. Конвертация изображений в PDF
  46. Работа с collections в Python.

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