On Fri, Jun 18, 2010 at 7:49 AM, Dr. Bobus <[email protected]> wrote:
> 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.
>
> No acabo de entender lo que estoy haciendo mal.

Obviamente tienes un problema de scope. A través de eval estas
queriendo obtener el valor dinámicamente,
pero dentro el scope de eval no esta definida la variable en cuestión.

Tienes algo así:

def main():
    def do_stuff(var):
        value = eval(var)
        print value

    cmasa = "foo"
    do_stuff("cmasa")


Y la definición de eval:
    eval(source[, globals[, locals]]) -> value

entonces funcionaría de la siguiente manera

def main():
    def do_stuff(var, global_vars={}):
        value = eval(var, global_vars)
        print value

    cmasa = "foo"
    do_stuff("cmasa", locals())


locals() dentro main retornaría un dic similar a:
{ "do_stuff": <method>, "cmasa": "foo" }

~Rolando
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a