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() Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list