efinições e escopo de funções aninhadas (UnboundLocalErro

Por que o código a seguir é inválido:

def foo1(x=5):
    def bar():
        if x == 5:
            x = 6
        print(x)
    bar()

Embora esse código seja válido:

def foo2(x=5):
    def bar():
        if x == 5:
            print('ok')
        print(x)
    bar()

foo2() fará exatamente o que você espera, masfoo1() dará umUnboundLocalError: local variable 'x' referenced before assignment na linhaif x == 5:. Por que alterar o valor de x posteriormente no código torna esse condicional inválid

questionAnswers(1)

yourAnswerToTheQuestion