Курс 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. JSON-esque в Python
  2. Логирование с Logzero
  3. Структурирование именованных констант
  4. Хеши в Python
  5. Big O оптимизация
  6. Работа с путями в Python
  7. Оператор Walrus в Python
  8. Функции map() и reduce() в Python
  9. Настройка вывода в Numpy
  10. Потоковый ввод в Python
  11. Объединение списков в Python.
  12. Преобразование данных в Python
  13. Генераторы в Python
  14. Участие в LP стейкинге Waves
  15. Работа с срезами в Numpy
  16. Чтение бинарного файла в Python.
  17. Оператор «моржа» (Walrus Operator)
  18. Управление мышью и клавиатурой с Pyautogui
  19. Оптимизация памяти с __slots__
  20. Подсчет элементов с помощью Counter
  21. Открытие и редактирование скриптов Python
  22. Подписка на SelectelNews в Twitter
  23. Подсчет количества элементов в списке
  24. Присвоение и ссылки
  25. Установка и использование Logzero
  26. Создание GUI на Tkinter
  27. UserString в Python
  28. Генераторы списков в Python
  29. Создание списков в Python
  30. Добавление элементов в список
  31. Сохранение и загрузка модели в PyTorch
  32. Работа с контекстными переменными
  33. Подсчет часто встречающихся элементов
  34. Глубокое копирование объектов
  35. Функции в Python: создание и вызов
  36. Кортежи в Python: особенности и преимущества
  37. Замыкания в Python
  38. Работа с NumPy массивами
  39. Новшества Flask 2.0
  40. Метод join() для объединения элементов в строку.
  41. Сортировка данных с лямбда-функциями
  42. Удаление элемента по индексу
  43. Создание генераторов
  44. Просмотр атрибутов и методов класса

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