Курс 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"
- Получение размера объекта с sys.getsizeof()
- Работа с геоданными с помощью geopy
- Получение текущей даты в Python
- Обработка ошибок в Python
- Метод pop() списка
- Создание уникального множества
- Метод join() для объединения элементов в строку.
- Конкатенация строк с методом join()
- Тестирование с responses
- Форматирование данных с помощью pprint
- Получение текущего времени в Python
- Метод __iand__ для пользовательских классов
- Работа с итераторами в Python
- F-строки в Python 3.8
- Удаление файлов и папок в Python
- Множественное наследование в Python
- Каналы Senior: Python, Java, Frontend, SQL, C++
- Возврат нескольких значений
- Локальные переменные.
- Оператор деления для класса Rational
- Работа с датой и временем в Python
- Нахождение хеша для бесконечности и NaN в Python
- Склеивание строк через метод join()
- Роль object и type в Python
- Перевод текста с Python Translator
- Логирование в Python
- Форматирование строк в Python
- Структуры данных в Python
- Создание словаря и множества
- Управление памятью в numpy.
- Тест скорости набора текста на Python
- Фильтрация списков с itertools
- Объединение списков с помощью zip
- Измерение времени выполнения
- Работа с комплексными числами
- Именованные кортежи в Python
- PUT запрос для обновления данных
- Функция product() из itertools
- Запрос пароля с помощью getpass
- Преобразование числа в восьмеричную строку
- Проверка надежности пароля на Python
- Создание итератора
- Разделение строки с помощью re.split()
- Профилирование кода















