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