Курс 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. Любовь к Python
  4. Оптимизация сравнения в Python
  5. Работа с SQLite в Python
  6. Быстрый поиск кода
  7. Конструктор в Python
  8. Искажение имен в Python
  9. Документация функции help() в Python
  10. Функциональное программирование в Python
  11. Нарезка списков в Python
  12. enumerate() в Python для работы с индексами
  13. Форматирование вывода с F-строками
  14. Изменение IP-адреса в Python
  15. Генераторы в Python
  16. Генератор бросков кубиков
  17. Форматирование объектов с модулем pprint
  18. Отладка в командной строке
  19. Обработка ошибок в Python
  20. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  21. Метод join() для объединения элементов
  22. Замыкания в Python
  23. Названия переменных
  24. Применение функции к элементам списка
  25. Функции map, filter, reduce
  26. Кортежи в Python: особенности и преимущества
  27. Транспонирование 2D-массива с помощью zip
  28. Оператор in для проверки наличия элемента
  29. Расширение операции побитового «и» в Python
  30. Удаление ключа из словаря в Python
  31. Работа с асинхронными задачами в Python
  32. Форматирование строк в Python
  33. Моржовый оператор в Python 3.8
  34. Использование обратной косой черты в f-строках
  35. Отправка HTTP-запросов с User-Agent
  36. Управление мышью и клавиатурой с Pyautogui
  37. Удаление дубликатов с помощью множеств
  38. Логирование в Python
  39. Работа с argparse
  40. Безопасные SQL-запросы в Python 3.11
  41. Многострочные комментарии в Python
  42. Создание обратного итератора
  43. Модуль inspect
  44. Python itertools combinations() — группировка элементов
  45. Списки в Python: синтаксис представления
  46. Многопоточность и асинхронное программирование в Python
  47. Методы сравнения множеств

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