Курс 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. Работа с изменяемыми коллекциями
  2. Метод join() для объединения строк
  3. Преобразование в float
  4. Списки в Python: основы
  5. Логирование в Python
  6. Фильтрация входных данных в Python
  7. Создание словарей с defaultdict
  8. Функции в Python
  9. Оптимизация создания строк
  10. Работа с Requests для HTTP-запросов
  11. Поиск элементов BeautifulSoup
  12. Экспорт функций в Python
  13. Поиск анаграмм с Counter
  14. Работа со слайсами
  15. Курс по дообучению ChatGPT
  16. Модуль subprocess: запуск внешних команд
  17. Оператор continue в Python
  18. Аннотации типов в Python
  19. Удаление эмодзи с помощью pandas
  20. Применение функций в Python
  21. Запуск Python из интерпретатора
  22. Генераторы словарей и множеств
  23. Декораторы классов
  24. Получение обратного списка чисел
  25. Функции с дополнением
  26. Пустой оператор pass в Python
  27. Декораторы в Python
  28. Преобразование регистра строк
  29. Dict Comprehension в Python
  30. Обработка элементов в Python
  31. Функция enumerate в Python
  32. Python enumerate() функции
  33. Преобразование строк в числа в Python
  34. Избегайте использования goto
  35. Хеширование паролей с солью
  36. Курсы Яндекс Практикум
  37. Метод join для объединения строк
  38. Утечки переменных цикла в Python 3.x
  39. Создание и обучение модели с Keras
  40. Справка по импортированным модулям
  41. Оператор is в Python
  42. Особенности запятых в Python
  43. Защита данных в Python
  44. Оператор «not» в Python
  45. Оформление кода по PEP 8

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