<DIV>>>Whenever my module A needs to pass a lot of data to module B, I find <BR>>>myself making a factory function in module B for creating the datastructures<BR>>><BR>>>def my_factory_function(a, b, c):<BR>>>     # input checking<BR>>>     res.a = a<BR>>>     res.b = b<BR>>>     res.c = c<BR>>>     return res<BR>>><BR>>>I believe this is fairly common.<BR>>><BR>>>Since the fields are already defined in the function signature, I'd <BR>>>prefer to not repeat myself and write something like this:<BR>>><BR>>>def my_factory_function(a, b, c):<BR>>>     args = locals()<BR>>>     # input checking<BR>>>     return namedtuple('MyTypeName', args)<BR>>><BR>>><BR>>>This would perceivably be possible, if locals() returned an OrderedDict <BR>>>and an appropriate namedtuple factory function was added.<BR>>><BR>>>related discussion is in:<BR>>>http://kbyanc.blogspot.com/2007/07/python-aggregating-function-arguments.html<BR>>>http://code.activestate.com/recipes/500261/<BR>>><BR>>>Does this seem familiar or useful to anyone besides me?</DIV>
<DIV>in current syntax, res.a = a is not allowed, if res is a dict, the<BR>right syntax is res['a'] = a. in some languages, res.a equals<BR>res['a'], but not in python. (and isn't possible in Python, because<BR>there are many disadvantage to make this.).</DIV>
<DIV>so, if you need put arguments into a dict, you can do this:<BR>def my_factory_function(**arg):<BR>    # input check<BR>    return arg</DIV>
<DIV>arg is a dict.</DIV>
<DIV>and, if res is a class, you are setting the attribute of res. you can<BR>also:<BR>def my_factory_function(**arg):<BR>    # input check<BR>    res.__dict__.update(arg)<BR>    return res</DIV>
<DIV>a named tuple is just a dict (I think :-)<BR></DIV>