Курс 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: nonlocal
- Работа с срезами в Python
- discard() — удаление элемента из множества
- Метод __iand__ для пользовательских классов
- Распаковка аргументов в Python
- Просмотр файла в Jupyter Noteboo
- Лямбда-функции в defaultdict
- Установка и использование howdoi
- Получение срезов итераторов
- Отношения подклассов в Python
- Lambda Functions in Python
- Список переменных с %who
- Генерация фальшивых данных с Faker
- Определение функций с необязательными аргументами
- Работа с OpenCV
- Регулярные выражения: метод match
- Оптимизация гиперпараметров с Scikit Optimize
- Метод rlshift для битового сдвига
- Управление пакетами с pip
- TypedDict для kwargs в Python 3.12
- Делегирование в Python
- Создание списков в Python
- Python: библиотеки и функции
- Создание OrderedDict
- Бинарный поиск
- UserList в Python: Описание и примеры использования
- Метод get() для словарей
- Основные операции с библиотекой Numpy
- Подсчет вхождений элементов
- Компиляция регулярных выражений
- Проверка условий: all и any
- Работа с модулем random
- Библиотека itertools: объединение списков
- Работа с файлами в Python
- Управление виртуальными окружениями в Python
- Асинхронное программирование с asyncio
- Изменение объектов в Python
- Разделение строки с помощью split()
- Любовь к Python
- Извлечение статей с newspaper3k
- Получение локальных переменных в Python
- Оператор break в Python
- Pretty-printing JSON в Python
- Чтение и запись TOML-конфигов
- Основы Python
- Объединение списков в Python















