Курс 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
- Модуль math: константы π и e
- Работа с типами данных в Python с помощью pydantic.
- Работа с Colorama
- Динамическая типизация в Python
- Работа со строками
- Подсказки при вводе данных в Python
- Создание словаря в Python
- Фильтрация списка от «ложных» значений
- Измерение времени выполнения кода с использованием time
- Функция zip() в Python
- Управление виртуальными окружениями в Python
- Основы Python
- Метод classmethod
- Измерение времени выполнения кода
- Оператор обр. импликации
- Python: Splat-оператор и splatty-splat
- Работа со строками в Python.
- Локальные переменные.
- Работа с timedelta в Python
- Создание словарей в Python
- Создание таблиц в Python с PrettyTable
- Создание новых функций с помощью functools.partial
- Очистка данных в Python
- Получение текущего времени в Python
- Форматирование кода на Python
- Экранирование символов в Python
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Combobox в Tkinter
- Howdoi — получение ответов из терминала
- Метод repr() в Python
- Solidity для DeFi Ethereum
- Установка Git и AWS CLI
- Явный импорт в Python
- Переопределение метода __rshift__
- Гибкие функции Python
- Чтение и запись TOML-конфигов
- Операции с кортежами
- Умножение строк и списков
- Очистка данных с Pandas
- Именованные срезы в Python
- Удаление дубликатов из списка с помощью dict.fromkeys
- Методы HTTP запросов в Flask
- Транспонирование 2D-массива с помощью zip















