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/