Курс 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. Форматирование вывода с F-строками
  2. Функции min(), max(), sum()
  3. Расчет времени выполнения
  4. Отладка утечек памяти в Python
  5. Обработка данных в Python
  6. Генераторы в Python
  7. Манипуляция формой массива в Numpy
  8. Метод classmethod
  9. Получение текущего времени в Python
  10. Символ подчеркивания в Python
  11. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  12. Функции map, filter, reduce
  13. Создание списков в Python
  14. Метод Enumerate() для списков
  15. Шаблоны и наследование в Flask
  16. Поиск HTML-элементов с BeautifulSoup
  17. Работа с IP-адресами в Python
  18. Фильтрация входных данных в Python
  19. Обмен значений переменных в Python
  20. Работа со строками в Python
  21. Подсчет элементов в Python
  22. None в Python: использование и особенности
  23. Аргумент по умолчанию
  24. Оператор морж в Python 3.8
  25. Настройка шрифта и цвета в Tkinter
  26. Метод hash в Python
  27. Импортирование в Python
  28. Абстракции словарей и множеств в Python
  29. Python и Юникод: работа с цифрами
  30. Настройка вывода NumPy
  31. Роль object и type в Python
  32. Создание множества в Python
  33. Antigravity модуль
  34. Вывод букв строки в Python
  35. PrettyTable: создание таблицы
  36. Метод is_absolute() для PurePath
  37. Удаление специальных символов с помощью re.sub
  38. Функция eval() в Python
  39. Логирование с Logzero
  40. Создание словарей и множеств в Python
  41. Основные операции с библиотекой Numpy
  42. Конкатенация строк в Python
  43. Открытие и редактирование скриптов Python
  44. Инициализация переменных
  45. Удаление файлов с shutil.os.remove()

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