Frame hacking

George Sakkis george.sakkis at gmail.com
Tue Dec 12 16:56:30 EST 2006


Gabriel Genellina wrote:
> On 12 dic, 17:46, "George Sakkis" <george.sak... at gmail.com> wrote:
>
> > I wonder if the following is possible:
> >
> > def inject_n_call(func, **kwds):
> >     '''Call func by first updating its locals with kwds.'''
> >
> > def f():
> >     return x*y
> >
>
> >>> eval(f.func_code, dict(x=3,y=4))
> 12

Sweet! I think I just reinvented what eval does in this case by
fiddling with sys.settrace and frame.f_globals. Glad to trash my
20-line function for an one-liner :)

Regards,
George




More information about the Python-list mailing list