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