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