Speed of Nested Functions & Lambda Expressions

beginner zyzhu2000 at gmail.com
Tue Oct 23 16:42:44 EDT 2007


On Oct 23, 11:06 am, Gary Herron <gher... at islandtraining.com> wrote:
> beginner wrote:
> > Hi All,
>
> > It is really convenient to use nested functions and lambda
> > expressions. What I'd like to know is if Python compiles fn_inner()
> > only once and change the binding of v every time fn_outer() is called
> > or if Python compile and generate a new function object every time. If
> > it is the latter, will there be a huge performance hit? Would someone
> > give some hint about how exactly Python does this internally?
>
> > def fn_outer(v):
> >     a=v*2
> >     def fn_inner():
> >         print "V:%d,%d" % (v,a)
>
> >     fn_inner()
>
> > Thanks,
> > Geoffrey
>
> The code is compiled only once when the file is initially read in.
> During execution of fn_outer, v will be bound to a value, then a, then
> fn_inner will be bound (to an already compiled code object) and so on.
>
> Really, from the point of view of Python while executing fn_outer, the
> def of fn_inner looks just like an assignment with fn_inner as the
> variable name and a code object as the value.
>
> Gary Herron- Hide quoted text -
>
> - Show quoted text -

I see. Thanks Gary!




More information about the Python-list mailing list