These weekend I've been tearing down to pieces Michele Simionato's decorator module, that builds signature preserving decorators. At the heart of it all there is a dynamically generated function, which works something similar to this...
... src = """def function(a,b,c) :\n return _caller_(a,b,c)\n""" evaldict = {'_caller_' : _caller_} code = compile(src, '<string>', 'single') exec code in evaldict new_func = evaldict[function] ... I have found fooling around with this code, that the compile step can be completely avoided and go for a single: exec src in evaldict Now, I'm sure there is a good reason for that additional step, but I haven't been able to find what the difference between both approaches is. And since I'm asking, could something similar, i.e. defining a new function and get a handle to it, be achieved with eval? Thanks in advance, Jaime Fernández http://numericalrecipes.blogspot.com -- (\__/) ( O.o) ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes de dominación mundial. -- http://mail.python.org/mailman/listinfo/python-list