Definiciones de funciones anidadas y alcance (UnboundLocalError)
Por qué el siguiente código no es válido:
def foo1(x=5):
def bar():
if x == 5:
x = 6
print(x)
bar()
Mientras este código es válido:
def foo2(x=5):
def bar():
if x == 5:
print('ok')
print(x)
bar()
foo2()
hará exactamente lo que espera, perofoo1()
dará unUnboundLocalError: local variable 'x' referenced before assignment
en la líneaif x == 5:
. ¿Por qué la modificación del valor de x más adelante en el código hace que este condicional no sea válido?