Namespaces, multiple assignments, and exec()
mail at johnohagan.com
Sat Dec 20 16:41:19 CET 2008
On Sat, 20 Dec 2008, Terry Reedy wrote:
> John O'Hagan wrote:
> > 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?
> Put everything in your own namespace
> for name in namelist:
Likely I'm missing something, but don't I still have to do
var1 = myvars['var1']
var2 = myvars['var2']
var3 = myvars['var3']
to make the assignments?
More information about the Python-list