Курс 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"
- Копирование файлов с shutil()
- Поиск наиболее частого элемента списке
- Метод __iand__ для пользовательских классов
- Получение списка кортежей из словаря
- Python: изменяемые и неизменяемые коллекции
- Замена атрибута в именованном кортеже
- Счетчик ссылок в Python
- Функция enumerate() — Python
- Управление асинхронными задачами с помощью Semaphore
- Функции в Python: создание и вызов
- Работа с CSV файлами в Python
- Перегрузка операторов в Python
- Многоточие в Python
- Обработка исключения UnboundLocalError
- Введение в PyTorch
- Комментарии в Python
- Работа с f-строками 2.0
- Работа с timedelta в Python
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Использование модуля math
- Проверка переменных окружения в Python
- Метод Self в Python
- Импорт объектов из модулей
- Игра Виселица на Python
- Метод Enumerate() для списков
- Структура данных deque в Python
- Импорт и использование модулей в Python
- Объединение словарей в Python
- Чтение и запись TOML-конфигов
- Функции range() в Python
- Создание вкладок с TKinter
- Конкатенация строк в Python
- Работа с коллекциями Python
- Оптимизация строк в Python
- Определение размера папок в Python
- Лимиты на ресурсы Python
- Копирование в Python
- Счетчик в Python: most_common()
- Сравнение def и lambda-функций
- Преобразование данных в Python
- Метод radd для пользовательских чисел
- Работа с CSV файлами в Python
- Цикл for в Python
- Импорт модулей в Python 3.12
- Solidity для DeFi Ethereum
- Управление контекстом выполнения кода















