*args (Identifier beliebig) ist eine Liste der (unbenannten) Argumente, die noch nicht durch vorstehende Parameter verbraucht worden sind.
**abc (Identifier beliebig) ist ein Dictionary der benannten Argumente, ie noch nicht durch vorstehende Parameter verbraucht worden sind.
Insgesamt bewirkt der Codeschnipsel, dass alle Argumente außer fun an fun weitergereicht werden.
Edit 14:30 -- Beispiel zu "verbraucht"
def testfn (foo, bar, baz, *args, **kwargs):
print "foo=",foo
print "bar=",bar
print "baz=",baz
for (n, item) in enumerate (args):
print "args[%s]=%s" % (n, item)
for k in kwargs:
print "kwargs[%s]=%s" % (k, kwargs [k])
testfn (111, 222, 333, 444, 555, extra=666)
foo= 111
bar= 222
baz= 333
args[0]=444
args[1]=555
kwargs[extra]=666
testfn (abc="def", foo="FUBAR", bar=True, baz=False);
foo= FUBAR
bar= True
baz= False
kwargs[abc]=def