Hi
Das ist weil bei foo(**d) werden die Werte anhand der Keys an die Parameter zugewiesen parameter a ist dict['a'], b ist dict['b'], c ist dict['c']
und bei der variante foo(*d) werden die keys als normale liste übergeben und enpackt -> d.keys()[0] = a, d.keys()[1] = b, d.keys()[2] = c
foo(*d) ist gleich wie foo(*d.keys()) weil bei dicts ohne angabe die keys zurückgegeben werden.
Hoffetlich war das jetzt verständlich
sonst Frag nochmals
zu *args = liste wird über den parameter enpackt (wie bei x,y=5,1)
bei **kwargs werden die parameter anhand der keys definiert.
guckst du hier
http://docs.python.org/tut/node6.html#S ... 0000000000
Gruss
PS: kannst args oder kwargs auch anders betiteln -> *lala oder so

[/url]