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