Namespaces, multiple assignments, and exec()

John O'Hagan research at johnohagan.com
Sat Dec 20 03:34:33 CET 2008


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?

Thanks,

John



More information about the Python-list mailing list