Курс 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. Цикл for в Python
  2. Работа с файлами в Python
  3. Декораторы с @wraps
  4. Объединение словарей в Python
  5. Работа со словарями с defaultdict из collections
  6. Работа с кортежами в Python
  7. Отслеживание прогресса с tqdm
  8. Отправка POST запроса на сервер.
  9. Зарезервированные слова в Python
  10. Методы сравнения множеств
  11. Списковое включение в Python
  12. Расчет времени выполнения
  13. Цикл for в Python
  14. Создание словаря в Python
  15. Принцип одной функции
  16. Аннотации типов в Python
  17. Получение текущей директории
  18. Списки: объединение, изменение
  19. Замена подстроки
  20. split() — разделение строки
  21. Форматирование строк с % в Python
  22. Функция sleep() в Python
  23. Создание веб-приложения с Flask
  24. Расширение операции побитового «и» в Python
  25. Создание объекта времени
  26. Lambda-функция в Python: использование с map() и sum()
  27. Метаклассы в Python
  28. Работа с collections в Python.
  29. Magic Commands — улучшение работы с Python
  30. Импорт модуля из другого каталога
  31. Выбор редактора кода.
  32. Срезы в Python
  33. kwargs в Python
  34. Библиотека itertools: объединение списков
  35. Поиск самого частого элемента
  36. Проверка элементов списка условием
  37. 9 уловок для чистого кода
  38. Сортировка с помощью параметра key
  39. Работа с базами данных SQLite
  40. Инициализация объекта
  41. Функция format() в Python
  42. Поиск файлов по шаблону
  43. Лямбда-функции в Python
  44. Работа с асинхронными задачами в Python

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