Michael Spencer wrote:

As you no doubt have discovered from the docs and this group, that isn't doable with CPython.

Too bad to know this.

 >>> a = {'x':1, 'y':2}
 >>> b = {'x':3, 'y':3}
 ...
 >>> def funa(x,y, **kw):
 ...     del kw     #Careful of unwanted names in locals with this approach
 ...     z = x + y
 ...     return locals()

There are hundreds of items in the dictionary (that will be needed in the calculation) so passing the whole dictionary is a lot better than passing individual items.


Alternatively, you could use exec:

Yes. I thought of using exec or eval. If there are a dozen statements,

def fun(d):
  exec 'z = x + y' in globals(), d

seems to be more readable than

def fun(d):
  d['z'] = d['x'] + d['y']

But how severe will the performance penalty be?

Bo

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to