Namespaces, multiple assignments, and exec()

Arnaud Delobelle arnodel at googlemail.com
Sat Dec 20 04:28:55 EST 2008


John O'Hagan <research at johnohagan.com> writes:

> I have a lot of repetitive assignments to make, within a generator,
> that use a function outside the generator:
>
> var1 = func("var1", args)
> var2 = func("var2", args)
> var3 = func("var3", args)
> etc...
>
> In each case the args are identical, but the first argument is a
> string of the name being assigned. It works fine but I'd like to
> reduce the clutter by doing the assignments in a loop. I've tried
> using exec():
>
> for name in name_string_list:
>     exec(name + ' = func(\"' + name + '\", args)')
>
> but in the local namespace it doesn't understand func(), and if I give
> it globals() it doesn't understand the args, which come from within
> the generator.
>
> What's a good way to do this kind of thing?

Your problem is describe in too vague a way to get good answers IMHO.
Are var1, var2, ... globals or local to the generator?  Can you give
some sample code to show what doesn't work?

-- 
Arnaud



More information about the Python-list mailing list