Не работает присвоение переменной

Не присваивается 5 в конце

def func_outer():
    x = 2
    print('x равно', x)
    def func_inner():
        global x
        x = 5
    func_inner()
    print('Локальное x сменилось на ', x)
func_outer()

Ответы (2 шт):

Автор решения: krytoy4el

Hужно заменить global на nonlocal:

def func_outer():
    x = 2
    print('x равно', x)
    def func_inner():
        nonlocal x
        x = 5
    func_inner()
    print('Локальное x сменилось на ', x)
func_outer()
→ Ссылка
Автор решения: S. Nick

я увидел вашу задачу так:

def func_outer():
    x = 2
    print('x равно', x)

    def func_inner():
#        global x        # -
        x = 5
        return x         # +

    x = func_inner()     # + x = 
    print('Локальное x сменилось на ', x)

func_outer()
→ Ссылка