Курс 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. Progress с библиотекой tqdm
  2. Функции с дополнением
  3. Сглаживание списка
  4. Фильтрация списка чисел
  5. Оператор is в Python
  6. Проверка дубликатов в Python
  7. Работа с deque из collections
  8. Удаление элементов из списка в Python
  9. Создание копии списка в Python
  10. Подписка на Kaspersky Team
  11. Метод сравнения объектов в Python
  12. Numpy: объединение массивов
  13. Красивый вывод списка
  14. Автоматизация скриптов на AWS Lightsail.
  15. Очистка строки в Python
  16. Использование модуля math
  17. Активация Matplotlib в Jupyter
  18. Инверсия списков и строк в Python
  19. Поиск email
  20. Операции с числами в Python
  21. Отладка утечек памяти в Python
  22. Функция zip() в Python
  23. Метод get для словарей
  24. Работа с словарями в Python
  25. Метод Self в Python
  26. Измерение времени выполнения
  27. Анонимные функции в Python
  28. Анализ кода — Python
  29. Нахождение отличий в списках
  30. Генераторы списков в Python
  31. Метод rmatmul для обратного матричного умножения
  32. Обновление данных через PUT запрос
  33. Поиск индексов подстроки
  34. Обработка аргументов Python
  35. Функции в Python
  36. Тестирование с unittest
  37. Установка и использование библиотеки google
  38. Новшества Flask 2.0
  39. Генерация резюме в Gensim
  40. Открытие, чтение и закрытие файла
  41. Получение текущей директории
  42. Итераторы в Python
  43. Извлечение аудио из видео

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