Курс 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: nonlocal
  2. Работа с срезами в Python
  3. discard() — удаление элемента из множества
  4. Метод __iand__ для пользовательских классов
  5. Распаковка аргументов в Python
  6. Просмотр файла в Jupyter Noteboo
  7. Лямбда-функции в defaultdict
  8. Установка и использование howdoi
  9. Получение срезов итераторов
  10. Отношения подклассов в Python
  11. Lambda Functions in Python
  12. Список переменных с %who
  13. Генерация фальшивых данных с Faker
  14. Определение функций с необязательными аргументами
  15. Работа с OpenCV
  16. Регулярные выражения: метод match
  17. Оптимизация гиперпараметров с Scikit Optimize
  18. Метод rlshift для битового сдвига
  19. Управление пакетами с pip
  20. TypedDict для kwargs в Python 3.12
  21. Делегирование в Python
  22. Создание списков в Python
  23. Python: библиотеки и функции
  24. Создание OrderedDict
  25. Бинарный поиск
  26. UserList в Python: Описание и примеры использования
  27. Метод get() для словарей
  28. Основные операции с библиотекой Numpy
  29. Подсчет вхождений элементов
  30. Компиляция регулярных выражений
  31. Проверка условий: all и any
  32. Работа с модулем random
  33. Библиотека itertools: объединение списков
  34. Работа с файлами в Python
  35. Управление виртуальными окружениями в Python
  36. Асинхронное программирование с asyncio
  37. Изменение объектов в Python
  38. Разделение строки с помощью split()
  39. Любовь к Python
  40. Извлечение статей с newspaper3k
  41. Получение локальных переменных в Python
  42. Оператор break в Python
  43. Pretty-printing JSON в Python
  44. Чтение и запись TOML-конфигов
  45. Основы Python
  46. Объединение списков в Python

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