[Python-Dev] Garbage collecting closures
Paul Prescod
paul@prescod.net
Mon, 14 Apr 2003 07:34:22 -0700
Tim Peters wrote:
> ...
>
> Hiding critical resources in closures is a Bad Idea, of course -- that's why
> nobody has used Scheme since 1993 <wink>
Just to be clear, I didn't really intend to create a closure (i.e. a
package of code and data). I just defined a function in a function
because the inner function wasn't needed elsewhere.
I don't know what the solution is, but it seems quite serious to me that
there is another special case to remember when reasoning about when
destructors get called. Roughly, Python's cleanup model is "things get
destroyed when nothing refers to them." Then, that gets clarified to
"unless they have reference cycles, in which case they may get destroyed
arbitrarily later" and now "or they are used in a function containing
another function, which will cause a circular reference involving all
local variables."
Paul Prescod