Курс 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. Получение размера объекта с sys.getsizeof()
  2. Работа с геоданными с помощью geopy
  3. Получение текущей даты в Python
  4. Обработка ошибок в Python
  5. Метод pop() списка
  6. Создание уникального множества
  7. Метод join() для объединения элементов в строку.
  8. Конкатенация строк с методом join()
  9. Тестирование с responses
  10. Форматирование данных с помощью pprint
  11. Получение текущего времени в Python
  12. Метод __iand__ для пользовательских классов
  13. Работа с итераторами в Python
  14. F-строки в Python 3.8
  15. Удаление файлов и папок в Python
  16. Множественное наследование в Python
  17. Каналы Senior: Python, Java, Frontend, SQL, C++
  18. Возврат нескольких значений
  19. Локальные переменные.
  20. Оператор деления для класса Rational
  21. Работа с датой и временем в Python
  22. Нахождение хеша для бесконечности и NaN в Python
  23. Склеивание строк через метод join()
  24. Роль object и type в Python
  25. Перевод текста с Python Translator
  26. Логирование в Python
  27. Форматирование строк в Python
  28. Структуры данных в Python
  29. Создание словаря и множества
  30. Управление памятью в numpy.
  31. Тест скорости набора текста на Python
  32. Фильтрация списков с itertools
  33. Объединение списков с помощью zip
  34. Измерение времени выполнения
  35. Работа с комплексными числами
  36. Именованные кортежи в Python
  37. PUT запрос для обновления данных
  38. Функция product() из itertools
  39. Запрос пароля с помощью getpass
  40. Преобразование числа в восьмеричную строку
  41. Проверка надежности пароля на Python
  42. Создание итератора
  43. Разделение строки с помощью re.split()
  44. Профилирование кода

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