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