Function arguments

Chris Rebert clp2 at rebertia.com
Mon Jan 26 10:39:28 CET 2009


On Mon, Jan 26, 2009 at 1:34 AM, brasse <thebrasse at gmail.com> wrote:
> On Jan 26, 10:11 am, Chris Rebert <c... at rebertia.com> wrote:
>> On Mon, Jan 26, 2009 at 1:03 AM, brasse <thebra... at 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



More information about the Python-list mailing list