Курс 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. Экспорт внешнего файла с помощью writefile
  2. Регистрация на TenChat
  3. Оператор «or» в Python
  4. Классы данных в Python
  5. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  6. Декоратор защиты анонимных пользователей
  7. Закрытие файла в Python
  8. Работа с файлами в Python
  9. Удаление дубликатов из списка
  10. Оптимизация методов в Python 3.7
  11. Бинарный поиск
  12. Проверка списка: any() и all()
  13. Логирование в Python
  14. Создание итератора
  15. Поиск HTML-элементов с BeautifulSoup
  16. Использование функции enumerate()
  17. Получение текущей директории
  18. Обезопасьте ввод данных
  19. Работа с Colorama
  20. Функция __init__ в Python
  21. Удаление ссылок в Python
  22. Запуск асинхронной корутины
  23. Список переменных в Python
  24. Defaultdict в Python
  25. Оператор continue в Python
  26. Именованные кортежи в Python
  27. Упрощение условных выражений с тернарным оператором
  28. Взаимодействие с внешними процессами в Python
  29. Правила именования переменных
  30. Объединение объектов в Python
  31. Тайное преобразование типа ключа
  32. Ускорение выполнения кода в Python
  33. Проверка версии Python
  34. Запуск внешнего кода в Jupyter
  35. Разделение строки в Python
  36. Конкатенация строк с методом join()
  37. Оператор is в Python
  38. Python Менеджер контекста
  39. Управление асинхронными задачами на Python.
  40. Многопоточность в Python
  41. Поиск индекса элемента
  42. Измерение времени выполнения с помощью time
  43. Преобразование символов с помощью map
  44. Тип CodeType в Python.
  45. Python: отсутствие точек с запятыми
  46. Лямбда-функции в Python

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