[EMAIL PROTECTED] 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 -- http://mail.python.org/mailman/listinfo/python-list