indirect **keyword calls

Sean 'Shaleh' Perry shalehperry at
Mon Oct 28 10:13:27 CET 2002

On Monday 28 October 2002 00:59, Terry Hancock wrote:
> Hi all,
> I've just recently come across a need for this idiom (isn't
> this new in Python 2.x?):
> def my_func(spam, ham=1, **eggs):
>      #...
>      pass
> where 'eggs' gets a dictionary of keyword arguments.  I
> haven't previously had any experience with it.
> It seems that Zope's ZSQL methods accept their arguments
> in this form, but I need to provide an intermediate layer.
> Is there any way of writing a general call that passes a
> received set of keywords on to a called function.

From the interpreter:

>>>> def my_real(**kw):
...   print kw
>>> my_real(this=1, that=2)
{'this': 1, 'that': 2}
>>> def my_wrap(**kw):
...   my_real(**kw)
>>> my_wrap()
>>> my_wrap(this=1, that=2)
{'this': 1, 'that': 2}

The point is you pass the dictionary with the keywords onto the next function 
by continuing to use the **kw syntax.  BTW kw is just a convention you can 
call it whatever you want.

More information about the Python-list mailing list