[Python-Dev] Garbage collecting closures
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