A quick hack: >>> from inspect import getargspec >>> >>> def func(a, b, c=3, **kwargs): ... out_dict = {} ... args, _, keywords, _ = getargspec(func) ... for argname in args: ... out_dict[argname] = locals()[argname] ... if keywords: ... out_dict.update(locals()[keywords]) ... return out_dict ... >>> func(1,2, gah=123) {'a': 1, 'c': 3, 'b': 2, 'gah': 123} >>>
On Wed, Apr 24, 2013 at 2:36 PM, Wolfgang Maier <wolfgang.ma...@biologie.uni-freiburg.de> wrote: > Hi everybody, > what is the recommended way of stuffing *all* function arguments (not just > the ones passed by **kwargs) into a common dictionary? > > The following sort of works when used as the first block in a function: > try: > kwargs.update(locals()) > except NameError: > kwargs = locals().copy() > > except that it's nesting pre-existing kwargs. > > Thanks for your help, > Wolfgang > > -- > http://mail.python.org/mailman/listinfo/python-list -- Fábio Santos -- http://mail.python.org/mailman/listinfo/python-list