Курс 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"
- discard() — удаление элемента из множества
- Сглаживание списка
- Обработка аргументов Python
- История Python
- Переопределение унарных операторов
- Применение функции к каждому элементу списка
- Красивый вывод списка
- Декораторы в Python
- Лямбда-функции в Python
- Работа с итераторами через срезы
- Ошибка NotImplemented в Python
- Повторение элементов списков
- Разбиение строки в Python
- Объединение словарей в Python
- Lambda-функция в Python: использование с map() и sum()
- Поиск HTML-элементов с BeautifulSoup
- Работа со временем в Python
- Генерация QR-кодов с Python
- Использование модуля __future__
- Замена текста с re.sub()
- Комментарии в Python
- Переворот последовательности
- Работа с модулем random
- Логические значения в Python
- Python Метод sleep() из time
- Docstring в Python
- Метод join() для объединения элементов строки
- Создание списков в Python
- Метод enumerate() в Python
- Перегрузка операторов в Python
- Метод __irshift__ для побитового сдвига вправо
- Генератор списка с условием if
- Добавление Progressbar в Python
- Списки: объединение, изменение
- Отладка производительности Python
- Перемещение и удаление файлов в Python
- Непрерывная проверка в Python
- Функции all и any в Python
- Встраивание HTML в Jupyter Notebook
- Библиотека wikipedia для Python
- Создание инструмента обнаружения плагиата
- Работа с буфером обмена на Python
- Метод ne для сравнения объектов
- Открытие, чтение и закрытие файла
- Работа с YAML в Python: PyYAML.
- Операторы увеличения и уменьшения переменной
- Закрытие файла в Python















