local variable referenced before assignment

nieto_a1 en tsm.es nieto_a1 en tsm.es
Jue Dic 18 16:33:00 CET 2003


> Hola a todos,
> soy un poco nuevo en python y tengo un problema, que se meda
continuamente.
> Os lo cuento:
>
> Tengo una variable al principio de mi programa que la utilizo dentro de
una
> execpcion, para inicializarla a un valor concreto, cuando postertiormente
la
> hago referencia en la funcion principal con un simple print, me da el
error:
>
> local variable referenced before assignment
>
> La cosa seria asi(por ejemplo):
> try:
> variable=2
> from variables import *
> except ImportError, err:
> print "No se cargo el modulo. %s" % (err)
> sys.exit(2)
>
> def main():
> print variable
> if __name__ == '__main__': main()
>
> No se si en python hay que inicializar las variables antes de utilizarlas
> con un valor predeterminado.Hasta ahora cuando me daba este problema
> inicilizaba la variable antes de llamarla a un valor, 0 por ejemplo,pq el
> error no lo a dado siempre,sino que al hacer unos cambios en el programa
que
> no tiene que ver con la variable en cuestion,luego ejecute y me lo dio.
>
> Si alguien tiene una solucion agradeceria que me ayudara, pq estoy upoco
> perdido.

Hola,

El problema se debe a que la "supuesta" variable global no lo es porque si te fijas está definida
dentro del bloque try, es decir, sólo es existe entre el try y el catch. Una solución podría ser;

variable = 2
try:
    from variables import *
except ImportError, err:
    print "No se cargo el modulo. %s" % (err)
    sys.exit(2)

def main():
    print variable

if __name__ == '__main__': main()

Saludos



Más información sobre la lista de distribución Python-es