Курс 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"
- Измерение времени выполнения в Python
- Удаление дубликатов из списка
- Любовь к Python
- Оптимизация сравнения в Python
- Работа с SQLite в Python
- Быстрый поиск кода
- Конструктор в Python
- Искажение имен в Python
- Документация функции help() в Python
- Функциональное программирование в Python
- Нарезка списков в Python
- enumerate() в Python для работы с индексами
- Форматирование вывода с F-строками
- Изменение IP-адреса в Python
- Генераторы в Python
- Генератор бросков кубиков
- Форматирование объектов с модулем pprint
- Отладка в командной строке
- Обработка ошибок в Python
- Перезапуск ячейки в Jupyter Notebook с dostoevsky
- Метод join() для объединения элементов
- Замыкания в Python
- Названия переменных
- Применение функции к элементам списка
- Функции map, filter, reduce
- Кортежи в Python: особенности и преимущества
- Транспонирование 2D-массива с помощью zip
- Оператор in для проверки наличия элемента
- Расширение операции побитового «и» в Python
- Удаление ключа из словаря в Python
- Работа с асинхронными задачами в Python
- Форматирование строк в Python
- Моржовый оператор в Python 3.8
- Использование обратной косой черты в f-строках
- Отправка HTTP-запросов с User-Agent
- Управление мышью и клавиатурой с Pyautogui
- Удаление дубликатов с помощью множеств
- Логирование в Python
- Работа с argparse
- Безопасные SQL-запросы в Python 3.11
- Многострочные комментарии в Python
- Создание обратного итератора
- Модуль inspect
- Python itertools combinations() — группировка элементов
- Списки в Python: синтаксис представления
- Многопоточность и асинхронное программирование в Python
- Методы сравнения множеств















