On Thu, Feb 28, 2019 at 11:13 PM Rhodri James <rho...@kynesim.co.uk> wrote:
>
> On 27/02/2019 21:39, Roel Schroeven wrote:
> > Rhodri James schreef op 27/02/2019 om 15:18:
> > Aren't we overthinking this?
> >
> > I think it's pretty clear that a variable is never deleted before it
> > goes out of scope. A quick search in the documentation points me to
> > (https://docs.python.org/3/reference/datamodel.html#objects-values-and-types):
> >
> >
> > "Objects are never explicitly destroyed; however, when they become
> > unreachable they may be garbage-collected. An implementation is allowed
> > to postpone garbage collection or omit it altogether — it is a matter of
> > implementation quality how garbage collection is implemented, *as long
> > as no objects are collected that are still reachable*." (emphasis mine)
> >
> > In the original example (without del), f is reachable everywhere in the
> > function after the initial binding, so it can not be deleted.
> >
> > Comparisons with C on this point don't seem very relevant: C doesn't
> > have destructors or garbage collection. I don't even see what the C
> > equivalent for "del f" could be. You could perhaps compare with C++,
> > where destructors are also not called before the object goes out of
> > scope (a difference is that in C++ the destructor explicitly always is
> > called at that moment).
>
> I think you're making the mistake of equating names ("variables") and
> objects here.  It is not clear to me that a name can't be removed from
> the dictionary of locals before it goes out of scope, so long as it
> doesn't get referred to again, just like C optimisers can note that a
> local doesn't get used again and reclaim the storage.  At that point the
> object can become unreachable, and will in Marko's example.
>
> The equivalent to "del f" that you can't imagine is the optimiser at work.
>

What if an exception gets raised at some point before the function has
returned? The exception object will give full access to the function's
locals.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to