[Python-es] scope de variables

Dr. Bobus drbobus en gulic.org
Vie Jun 18 20:11:23 CEST 2010


El Fri, 18 Jun 2010 12:49:14 +0100
"Dr. Bobus" <drbobus en gulic.org> dijo:

> Hola todos:
> 
> Me he enganchado en algo que supongo será una trivialidad, pero enganchado estoy.
> 
> He puesto un esqueleto de mi programa en:
> 
> http://snipt.org/Qkkh
> 
> Obtengo error (NameError: name 'cmasa' is not defined) en la linea 13 de forma sistemática. 

La verdad es que llevo todo el día con esto ... :(

He ido intentando aislar el tema y al final he llegado a esto: 

Este código funciona:

a = 1
def f1():
    print a

f1()


Este código da error:
a = 1
def f2():
    print a
    a += 5

f2()
  File "prueba.py", line 9, in f2
    print a
UnboundLocalError: local variable 'a' referenced before assignment

Este código funciona:
a = 1
def f3():
    global a
    print a
    a += 5

f3()


Este código funciona:
a = 1
def f4():
    print a
    b = a
    b += 5

f4()


Alguien me puede explicar porqué f2() da error y además porqué lo da con el print y no en la asignación?

Muchas gracias


Dr. Bobus



-- 
"World domination. Fast."
(By Linus Torvalds)
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20100618/e2286d5c/attachment.pgp>


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