[Python-Dev] Garbage collecting closures (original) (raw)

Jeremy Hylton jeremy@zope.com
14 Apr 2003 11:58:35 -0400


On Mon, 2003-04-14 at 11:52, Phillip J. Eby wrote:

If I understand correctly, it should also be breakable by deleting 'foo' from the outer function when you're done with it. E.g.:

def bar(a): def foo(): return None x = a foo() del foo # clears the cell and breaks the cycle

You haven't tried this, have you? ;-)

SyntaxError: can not delete variable 'foo' referenced in nested scope

Since foo() could escape bar, i.e. become reachable outside of bar(), we don't allow you to unbind foo.

Jeremy