Курс 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
- Модуль xkcd: добавление юмора в Python
- Управление импортом в Python
- Импорт модулей в Python 3.12
- Работа с областями видимости переменных
- Разделение строки на пары ключ-значение.
- CLI-инструмент howdoi
- Измерение времени выполнения кода в Python
- Виртуальное окружение Python
- Работа с аргументами командной строки в Python
- Модуль itertools: эффективная работа с итераторами
- Удаление символа из строки
- Сериализация данных в JSON с помощью json.dumps
- Получение частей дроби
- История Python
- Оператор Walrus в Python 3.8
- Поиск простых чисел
- Проверка запуска скрипта или импорта модуля
- Отслеживание выполнения программы с библиотекой tqdm
- Defaultdict в Python
- Python enumerate() функции
- Исправление ошибки NameError
- Установка пакета в Python
- Работа с множествами в Python
- Python и Монти Пайтон
- Переворот строки с помощью срезов
- Группы исключений в Python
- Взаимодействие с внешними процессами в Python
- Обезопасьте ввод данных
- Сортировка HTML по CSS-селектору
- Создание новых функций с помощью functools.partial
- Установка и обучение ChatterBot
- Капитализация строк
- Переменные в Python: сокращение гласных
- Обход дочерних элементов BeautifulSoup
- Установка и использование Logzero
- Асинхронный код в Python
- Конвертация коллекций в Python.
- Метод get() в Python
- Метод сравнения объектов в Python
- Управление экспортом элементов
- Конкатенация списков в Python
- Основы Python
- Удаление символа из строки















