Namespaces, multiple assignments, and exec()

Terry Reedy tjreedy at udel.edu
Fri Dec 19 21:38:12 EST 2008


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

myvars={}
for name in namelist:
   myvars[name]=func(name,args)




More information about the Python-list mailing list