On Wed, 2006-04-05 at 12:34 +0100, Alan Gauld wrote: > > Suppose you have a situation where you have a large number of command-line > > options that you will parse with getopt. You want to keep track of these > > as you move around in the code and do various things. > > > > Is it more Pythonic to: > > > > Have the functions take large numbers of parameters. > > > > Create an options class to pass the options around. > > Neither, the most Pythonic way IMHO is to use a dictionary and > possibly combine with Pythons variable arguments syntax as > described in section 4.7.3/4 of the official tutor. > > > I personally think the latter would look a lot cleaner once the number of > > options got up to around a half dozen, but I usually see the "large number > > of parameters" style in other people's code. > > Classes without behaviour are really just glorified dictionaries so > I prefer to use a dictionary. The **args mechanism provides a > good way to pass these to functions.
Just to expand on that a little bit, one useful coding trick where you use only a few of the parameters is to define the function as: def myfunc(param6, param11, param17, **extra): # The parameters you care about are unpacked for you # The rest are in extra # use the ** syntax to pass the dictionary in to your function myfunc( **param_dict) Coming up with better names is left as an exercise for the reader. I mostly use this when dealing with HTML forms with many variables. > > Alan G > Author of the learn to program web tutor > http://www.freenetpages.co.uk/hp/alan.gauld > > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor -- Lloyd Kvam Venix Corp _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor