local variable referenced before assignment

Chema Cortes py en ch3m4.org
Jue Dic 18 14:04:17 CET 2003


fermunyoz en softhome.net escribió:

> 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 entiendo bien muy bien el problema a partir del ejemplo, pero puede 
que esté relacionado con que en python, dentro de una función toda 
variable es global hasta que se le asigna un valor:

x=0
def f():
   print x
   # x=1

El comando print falla si quitas el último comentario, pues x pasa de 
ser una variable global a local por culpa de la última asignación.

Seguramente tu código funcionaba bien hasta que asignabas a la variable 
un valor dentro de la función. Lo mejor es que declares explícitamente 
las variables globales dentro de las funciones.




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