def outer():
x = 7
def inner():
nonlocal x
x = 20
inner()
return x
print(outer())
outer возвращает 20. nonlocal x в функции inner позволяет изменять переменную x в ближайшей внешней области видимости, не являющейся глобальной. Таким образом, inner изменяет x в outer, и outer возвращает измененное значение.
Код:
def outer():
x = 7
def inner():
nonlocal x
x = 20
inner()
return x
print(outer())
Объяснение:
outer определяет переменную x и присваивает ей значение 7.outer определена вложенная функция inner.inner используется ключевое слово nonlocal x. Это указывает на то, что переменная x, к которой обращается inner, находится в ближайшей внешней области видимости, которая не является глобальной. В данном случае, это переменная x в функции outer.inner изменяет значение x на 20. Благодаря nonlocal, меняется именно переменная x, объявленная в outer.inner вызывается внутри outer.outer возвращает значение x. Поскольку inner изменила значение x, outer вернет 20.outer(), и результат (20) выводится на экран.Результат:
20