Курс 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. Объединение списков в строку
  3. Пустой оператор pass в Python
  4. Работа с индексами списков
  5. Отправка POST-запроса в REST API
  6. Переопределение метода __pow__
  7. UserString в Python
  8. Измерение времени выполнения кода с использованием time
  9. Получение срезов итераторов
  10. Работа с OpenCV
  11. Очистка вывода в Python
  12. Модуль math: основные функции
  13. Получение текущей даты в Python
  14. Solidity для DeFi Ethereum
  15. Функция enumerate() — Python
  16. Работа с JSON данными в Python
  17. Поиск HTML-элементов с BeautifulSoup
  18. Счетчик в Python: most_common()
  19. Блок else в циклах.
  20. Создание таблиц в терминале с PrettyTable
  21. Работа с NumPy.linalg
  22. Генераторы и сеты в Python
  23. Генераторы словарей и множеств
  24. Переменная с нижним подчеркиванием
  25. Приближение чисел в Python
  26. Декоратор Ajax required
  27. Лямбда-функции в Python
  28. Проверка кортежей.
  29. Поиск индексов подстроки
  30. Сохранение Unicode в JSON
  31. Названия переменных
  32. Чтение бинарного файла в Python.
  33. Генерация UUID в Python
  34. Подчеркивание в REPL
  35. Документация функции help() в Python
  36. Очистка данных с помощью pandas
  37. Разность множеств
  38. Переопределение унарных операторов
  39. Таймер обратного отсчета
  40. Получение текущей даты и времени
  41. Метод join() для объединения элементов

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