*args and **kwargs

Thomas Jollans thomas at jollans.NOSPAM.com
Tue Jun 5 08:37:22 EDT 2007


"JonathanB" <doulos05 at gmail.com> wrote in message 
news:1181046478.824231.117300 at q75g2000hsh.googlegroups.com...
> Ok, this is probably definitely a newbie question, but I have looked
> all over the Python library reference material and tutorials which I
> can find online and I cannot find a clear definition of what these are
> and more importantly how to use them. From what I can tell from their
> use in the examples I've seen, they are for passing a variable number
> of arguments to a function (which I need to do in a program I am
> working on). But how do you use them? Is there a fixed order in which
> the arguments within *arg or **kwarg should be passed or will be
> called within a function? I realize this probably involves a long-
> winded answer to a very simple and common programming problem, so if
> someone has a link to TFM, I'll gladly go RTFM. I just can't find it.


I hope this example code will help you understand:

>>> def a(*stuff):
 print repr(stuff)

>>> def b(**stuff):
 print repr(stuff)


>>> def c(*args, **kwargs):
 print 'args', repr(args)
 print 'kwargs', repr(kwargs)


>>> a(1,2,3)
(1, 2, 3)
>>> b(hello='world', lingo='python')
{'hello': 'world', 'lingo': 'python'}
>>> c(13,14,thenext=16,afterthat=17)
args (13, 14)
kwargs {'afterthat': 17, 'thenext': 16}
>>> args = [1,2,3,4]
>>> kwargs = {'no-way': 23, 'yet-anotherInvalid.name': 24}
>>> c(*args, **kwargs)
args (1, 2, 3, 4)
kwargs {'no-way': 23, 'yet-anotherInvalid.name': 24}
>>>


(sorry for the messed-up formatting) 





More information about the Python-list mailing list