On Jan 26, 10:39 am, Chris Rebert <c...@rebertia.com> wrote: > On Mon, Jan 26, 2009 at 1:34 AM, brasse <thebra...@gmail.com> wrote: > > On Jan 26, 10:11 am, Chris Rebert <c...@rebertia.com> wrote: > >> On Mon, Jan 26, 2009 at 1:03 AM, brasse <thebra...@gmail.com> wrote: > >> > Hello! > > >> > Is there any way that I can get at all the arguments passed to a > >> > function as a map without using keyword arguments? > > >> > def foo(a, b, c): > >> > # Can I access all the arguments in a collection somewhere? > > >> You can use positional arguments: > > >> def foo(*args): > >> print args > > >> foo("a", "b", "c") #==> ["a", "b", "c"] > > >> Though if you explained your situation more, the newsgroup could > >> probably be of greater help. > > > This is an abbreviated version of what I am doing now: > > > def make_data(**kw): > > ''' > > make_data(foo='123', bar=42, time=time.time()) > > ''' > > template = '%(foo)s - %(bar)d - %(time)s' > > kw['time'] = time.strftime('%c', kw['time'] > > return template % kw > > > This works, but the function signature doesn't say much about > > arguments I should pass to it. What I would like to do is something > > like this: > > > def make_data(foo, bar time): > > template = '%(foo)s - %(bar)d - %(time)s' > > args = magic_get_args_function() > > args['time'] = time.strftime('%c', args['time'] > > return template % args > > Just use locals() as was pointed out by Diez: > > def make_data(foo, bar, time): > template = '%(foo)s - %(bar)d - %(time)s' > time = time.strftime('%c', time) > return template % locals() >
Nice, thank you! :.:: mattias -- http://mail.python.org/mailman/listinfo/python-list