problems binding a dictionary

Dody Suria Wijaya dodysw at gmail.com
Sat Dec 10 21:38:53 CET 2005


vida00 at gmail.com wrote:
> this has to be a very silly thing.
> 
> I have a function foo taking a dictionary as parameters. i.e.: def
> foo(**kwargs): pass
> when I call foo(param1='blah',param2='bleh',param3='blih') everything
> is fine.
> but when I do:
>>>> def foo(**kwargs):
> ...     pass
> ...
>>>> d=dict(param1='blah',param2='bleh',param3='blih')
>>>> foo(d)
> 
> I get:
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: foo() takes exactly 0 arguments (1 given)
> 
> Why? how do I pass the dictionary *d* to foo()?
> Thanks,
> 
> - Josh.
> 

simply because your parameter definition expect keyword parameter 
passing, and you are passing a paramater by placement. You should call 
the function like this:

f(mykey=d)

or, since d is dict, you could use d's key/vals as keyword parameter:
f(**d)

which equivalent to doing:
f(param1='blah',param2='bleh',param3='blih')


--
  dsw



More information about the Python-list mailing list