def outer():
    x = 5
    def inner():
        global x
        x = 10
    inner()
    return x
print(outer())
inner использует ключевое слово global, но при этом изменяет глобальную переменную x, которая определена *вне* функции outer. Локальная переменная x в outer не затрагивается. Таким образом, outer возвращает значение своей локальной переменной x, которая равна 5.
Разбор кода и объяснение результата:
Данный код демонстрирует взаимодействие локальных и глобальных переменных в Python, а также влияние ключевого слова global.
outer() определена. Она содержит локальную переменную x, инициализированную значением 5.outer() определена вложенная функция inner().inner() использует ключевое слово global x. Это означает, что внутри inner() переменная x относится к глобальной переменной, а не к локальной переменной функции outer().inner() глобальная переменная x изменяется на 10.  Важно:  Это изменение влияет на глобальную область видимости, а не на локальную x в outer().inner() вызывается внутри outer().outer() возвращает значение своей локальной переменной x, которая не была изменена вызовом inner(), так как inner() изменила глобальную переменную x.print(outer()) вызывает outer() и выводит возвращаемое ей значение.Результат:
Код выведет 5.
Почему 5?
Потому что функция outer() возвращает значение своей локальной переменной x, которая инициализирована значением 5 и не изменяется внутри outer(). Функция inner() изменяет глобальную переменную x, что не влияет на локальную переменную x функции outer().
Пример глобальной переменной:
x = 1  # Глобальная переменная
def outer():
    x = 5  # Локальная переменная outer()
    def inner():
        global x
        x = 10  # Изменяет ГЛОБАЛЬНУЮ x
    inner()
    print("x внутри outer:", x)  # Выведет 5
    print("Глобальная x после inner:", globals()['x']) #выведет 10
outer()
print("Глобальная x после outer:", x)  # Выведет 10