dictionary that have functions with arguments

Ron Adam rrr at ronadam.com
Wed Nov 2 02:47:38 EST 2005



Neal Norwitz wrote:

> Ron Adam wrote:
> 
>>Eval or exec aren't needed.  Normally you would just do...
>>
>>    execfunc['key1'](**args)
>>
>>If your arguments are stored ahead of time with your function...
>>
>>    Committed revision 41366.

Committed revision 41366 ?


>>You could then do...
>>
>>    func, args = execfunc['key1']
>>    func(**args)
> 
> 
> Interesting that both Ron and Alex made the same mistake.  Hmmm, makes
> me wonder if they are two people or not...
> 
> If args is a tuple, it should be:
> 
>   func(*args)

No mistake at all,  I simply reused the name the OP used in his example.

  >>>  execfunc = { 'key1' : func1(**args) }

There's no rule that says you can't name a dictionary 'args', and it 
wasn't part of the posters question.


> If you want the full generality and use keyword args:
> 
>   func(*args, **kwargs)

I tend to prefer (*args, **kwds) myself.  There are also times when I 
don't want full generality.  In many cases the less general your 
arguments are to a function the easier it is to catch errors.

Cheers,
    Ron







More information about the Python-list mailing list