indirect **keyword calls

Sean 'Shaleh' Perry shalehperry at attbi.com
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