Курс 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. Работа с IP-адресами в Python
  2. Сравнение def и lambda-функций
  3. Python reversed() функция
  4. Создание виртуальной среды
  5. Docstring в Python
  6. Генераторные функции в Python
  7. Работа со словарями с defaultdict из collections
  8. Импорт модуля из другого каталога
  9. Работа с датой и временем в Python
  10. Преобразование документов в PDF с помощью Spire.Office
  11. Фильтрация списка от «ложных» значений
  12. Автоматизация скриптов на AWS Lightsail.
  13. Работа со строками в Python
  14. Работа с множествами в Python
  15. Solidity для DeFi Ethereum
  16. Функция zip() в Python
  17. Курс Data Scientist в медицине
  18. Преобразование данных в Python
  19. Работа с дробями в Python
  20. Отступы в Python
  21. Отладка производительности Python
  22. Инвертирование словаря
  23. Удаление элементов из списка в Python.
  24. Измерение времени выполнения кода с использованием time
  25. Атрибуты массивов в Numpy
  26. Отправка POST-запроса в REST API
  27. Метод rmatmul для обратного матричного умножения
  28. Функция eval() в Python
  29. Работа с модулем os в Python
  30. Объединение строк с помощью метода join
  31. Генератор надежных паролей
  32. Управление IP-адресами через прокси
  33. Создание тестовых данных с Faker
  34. Объединение словарей в Python
  35. Метод count в Python: почему count(», ») возвращает 4?
  36. SciPy: широкий функционал для математических операций
  37. Метод __float__ в Python
  38. Рекурсия для обращения строки
  39. Игра «Виселица» на Python
  40. Объединение словарей в Python
  41. Переворот последовательности
  42. Особенности ключей словаря в Python

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