Ключевое слово nonlocal в Python
НАВИГАЦИЯ ПО СТРАНИЦЕ
Оно позволяет изменять переменные, которые находятся в объемлющей функции, но не являются глобальными. Давайте рассмотрим пример, чтобы лучше понять, как работает "nonlocal".
def внешняя_функция():
переменная = 10 # Это переменная внутри внешней функции
def вложенная_функция():
nonlocal переменная # С помощью "nonlocal" мы указываем, что хотим работать с переменной из внешней функции
переменная = 20
вложенная_функция()
print("Переменная внешней функции:", переменная)
внешняя_функция()
Результат программы
В этом примере мы имеем две функции: "внешняя_функция" и "вложенная_функция". В "внешняя_функция" есть переменная "переменная", и мы хотим изменить её значение внутри "вложенная_функция". Используя "nonlocal", мы указываем, что переменная, которая называется так же, как переменная во внешней функции, не является новой локальной переменной, а ссылается на переменную из внешней функции. Поэтому после вызова "вложенная_функция" значение "переменная" в "внешняя_функция" изменяется на 20.
Это полезно, когда вам нужно внутри вложенных функций работать с переменными из объемлющей функции, но при этом не делать их глобальными