Курс 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. Модуль math: константы π и e
  3. Работа с типами данных в Python с помощью pydantic.
  4. Работа с Colorama
  5. Динамическая типизация в Python
  6. Работа со строками
  7. Подсказки при вводе данных в Python
  8. Создание словаря в Python
  9. Фильтрация списка от «ложных» значений
  10. Измерение времени выполнения кода с использованием time
  11. Функция zip() в Python
  12. Управление виртуальными окружениями в Python
  13. Основы Python
  14. Метод classmethod
  15. Измерение времени выполнения кода
  16. Оператор обр. импликации
  17. Python: Splat-оператор и splatty-splat
  18. Работа со строками в Python.
  19. Локальные переменные.
  20. Работа с timedelta в Python
  21. Создание словарей в Python
  22. Создание таблиц в Python с PrettyTable
  23. Создание новых функций с помощью functools.partial
  24. Очистка данных в Python
  25. Получение текущего времени в Python
  26. Форматирование кода на Python
  27. Экранирование символов в Python
  28. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  29. Combobox в Tkinter
  30. Howdoi — получение ответов из терминала
  31. Метод repr() в Python
  32. Solidity для DeFi Ethereum
  33. Установка Git и AWS CLI
  34. Явный импорт в Python
  35. Переопределение метода __rshift__
  36. Гибкие функции Python
  37. Чтение и запись TOML-конфигов
  38. Операции с кортежами
  39. Умножение строк и списков
  40. Очистка данных с Pandas
  41. Именованные срезы в Python
  42. Удаление дубликатов из списка с помощью dict.fromkeys
  43. Методы HTTP запросов в Flask
  44. Транспонирование 2D-массива с помощью zip

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