Курс 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. Копирование файлов с shutil()
  2. Поиск наиболее частого элемента списке
  3. Метод __iand__ для пользовательских классов
  4. Получение списка кортежей из словаря
  5. Python: изменяемые и неизменяемые коллекции
  6. Замена атрибута в именованном кортеже
  7. Счетчик ссылок в Python
  8. Функция enumerate() — Python
  9. Управление асинхронными задачами с помощью Semaphore
  10. Функции в Python: создание и вызов
  11. Работа с CSV файлами в Python
  12. Перегрузка операторов в Python
  13. Многоточие в Python
  14. Обработка исключения UnboundLocalError
  15. Введение в PyTorch
  16. Комментарии в Python
  17. Работа с f-строками 2.0
  18. Работа с timedelta в Python
  19. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  20. Использование модуля math
  21. Проверка переменных окружения в Python
  22. Метод Self в Python
  23. Импорт объектов из модулей
  24. Игра Виселица на Python
  25. Метод Enumerate() для списков
  26. Структура данных deque в Python
  27. Импорт и использование модулей в Python
  28. Объединение словарей в Python
  29. Чтение и запись TOML-конфигов
  30. Функции range() в Python
  31. Создание вкладок с TKinter
  32. Конкатенация строк в Python
  33. Работа с коллекциями Python
  34. Оптимизация строк в Python
  35. Определение размера папок в Python
  36. Лимиты на ресурсы Python
  37. Копирование в Python
  38. Счетчик в Python: most_common()
  39. Сравнение def и lambda-функций
  40. Преобразование данных в Python
  41. Метод radd для пользовательских чисел
  42. Работа с CSV файлами в Python
  43. Цикл for в Python
  44. Импорт модулей в Python 3.12
  45. Solidity для DeFi Ethereum
  46. Управление контекстом выполнения кода

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