How to add function return value

Raymond Hettinger python at rcn.com
Fri May 30 22:16:08 EDT 2008


On May 30, 6:21 pm, HYRY <ruoyu0... at gmail.com> wrote:
> Can I write a decorator that it can automately do this conversion
>
> def func1()
>     a = 1
>
> --->
>
> def func1():
>     a = 1
>     return locals()

Not sure why you would want to do this, but there are several ways.

1. Make bytecode hack decorator that transforms the final "return
None" into "return locals()".  A recipe that shows the basic technique
is at: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/277940

2. Retrieve the source using inspect.getsourcelines(f). Then, append a
"return locals()" to the end of the function and run it through exec.

3. Try hacking a tracing/debugging utility.

4. Run the sourcefile through tokenize, make the appropriate
insertion, and then untokenize.

 . . .

Raymond



More information about the Python-list mailing list