Курс 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-строки в Python 3.8
  2. Оптимизация гиперпараметров в Python
  3. Проверка однородности элементов списка
  4. Группировка элементов Python
  5. Работа с collections.Counter
  6. Генерация случайных данных в NumPy
  7. Безопасный доступ к значениям словаря
  8. Очистка входных данных
  9. Однострочники Python
  10. Очистка данных с Pandas
  11. Библиотека Emoji: использование смайлов в Python
  12. Модуль xkcd: загрузка комиксов
  13. Метод count() для списка
  14. Работа с deque из collections
  15. Очистка данных с помощью pandas
  16. Проверка файла .py на синтаксис.
  17. Создание вложенных циклов for
  18. Преобразование генераторов в циклы
  19. Сортировка элементов в Python
  20. Справка по импортированным модулям
  21. Преобразование кортежа в словарь.
  22. Измерение времени выполнения кода
  23. Работа с временем в Python
  24. Возврат значений из генератора
  25. Регулярные выражения в Python
  26. Создание объекта timedelta
  27. Python: отсутствие точек с запятыми
  28. Создание словарей в Python
  29. Передача неизвестных аргументов в Python.
  30. Обработка аргументов Python
  31. Оператор морж в Python 3.8
  32. Метод __complex__ в Python
  33. Работа с байтовыми строками в Python
  34. Обязательные аргументы в Python
  35. Установка и использование emoji
  36. Работа с срезами в Python
  37. Python Метод sleep() из time
  38. Работа со строками
  39. Работа с YAML в Python: PyYAML.
  40. Класс UserDict: дополнительная функциональность
  41. Заказ карты Тинькофф Black
  42. Избегайте изменяемых аргументов
  43. Создание даты из строки ISO
  44. Python reversed() vs срез[::-1]
  45. Оператор += в Python

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