Курс 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. Метод Self в Python
  2. Объединение словарей в Python 3.5+
  3. Выражения-генераторы в Python
  4. Итерация по коллекции в Python
  5. Особенности множеств в Python
  6. Генерация случайных чисел в Python
  7. Получение ID процесса
  8. Управление User-Agent в Python
  9. Установка и использование Python-dateutil
  10. Просмотр внешнего файла в Python
  11. Библиотека Emoji: использование смайлов в Python
  12. Повторение элементов в Python
  13. Управление доступом к модулю
  14. Идентификатор объекта в Python
  15. Разделение строки в Python
  16. Импорт в Python: список all
  17. Работа с Enum в Python3.
  18. Упрощенный вывод данных в Python
  19. Python itertools combinations() — группировка элементов
  20. Рекурсия для обращения строки
  21. Структура данных словарь в Python
  22. Извлечение данных из JSON
  23. Применение функции map() в Python
  24. Установка пакета в Python
  25. Оценка выражений генератора в Python
  26. Именование переменных в Python
  27. Получение значений из словарей
  28. Работа с Event() в threading
  29. Создание и операции с дробями
  30. Кортежи в Python: особенности и преимущества
  31. Функции min(), max(), sum()
  32. Метод clear для коллекций
  33. Особенности запятых в Python
  34. Генераторы в Python
  35. Декораторы с аргументами
  36. Управление пакетами с pip
  37. Уникальность ключей в словаре
  38. Виртуальное окружение Python
  39. Срезы в Numpy
  40. Проверка типа объекта в Python
  41. 9 уловок для чистого кода
  42. Атрибуты класса и экземпляра
  43. Работа с CSV файлами в Python
  44. Игра «Виселица» на Python
  45. Использование super() в Python
  46. Сериализация данных в JSON с помощью json.dumps
  47. Замена символов в строке

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