Para el siguiente Python 2.7 código:Asignar a la variable de la función madre: "La variable local referenciado antes de la asignación"
#!/usr/bin/python
def funcA():
print "funcA"
c = 0
def funcB():
c += 3
print "funcB", c
def funcC():
print "funcC", c
print "c", c
funcB()
c += 2
funcC()
c += 2
funcB()
c += 2
funcC()
print "end"
funcA()
me sale el siguiente error:
File "./a.py", line 9, in funcB
c += 3
UnboundLocalError: local variable 'c' referenced before assignment
Pero cuando comente la línea de c += 3
en funcB
, me sale el siguiente resultado:
funcA
c 0
funcB 0
funcC 2
funcB 4
funcC 6
end
¿No se está accediendo a c
en los dos casos de +=
en funcB
y =
en funcC
? ¿Por qué no arroja error para uno pero no para el otro?
No tengo la opción de hacer c
una variable global y luego declarar global c
en funcB
. De todos modos, el punto es no obtener c
incrementado en funcB
sino por qué está arrojando un error para funcB
y no para funcC
mientras ambos acceden a una variable local o global.
pase como parámetro c ... – joaquin
he modificado el código un poco ahora que ahora es la versión correcta de la pregunta. – crk
Este enlace también tiene información, http://docs.python.org/faq/programming.html # why-am-i-getting-an-unboundlocalerror-when-the-variable-has-a-value –