por qué funciona esto:error de alcance en el cierre recursivo
def function1():
a = 10
def function2():
print a
function2()
pero esto no es así:
def function1():
a = 10
def function2():
print a
a -= 1
if a>0:
function2()
function2()
me sale este error:
UnboundLocalError: local variable 'a' referenced before assignment
De hecho, este es el punto clave en el diseño de esta función no se puede asignar a ámbitos no locales. (Nota: 'al' es * mutable *; por eso funciona). –
Creo que es importante, para mayor claridad, distinguir entre al variable y los valores que contiene. Siempre regresa a los indicadores para mí, así que déjame decir esto; no puede hacer que apunte a una nueva lista, pero puede cambiar el contenido de la lista a lo que apunta. al -> [v1, v2, v3] al no se puede cambiar, pero v1, v2 y v3 se pueden cambiar. Mike tiene toda la razón de que esto hace que todo sea mutable porque en nuestra terminología al * es * la lista no es el puntero a la lista. – charlieb
+1 muy buena respuesta. –