On Oct 23, 11:06 am, Gary Herron <[EMAIL PROTECTED]> 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! -- http://mail.python.org/mailman/listinfo/python-list