Lifetime of a local reference
tjol at tjol.eu
Wed Feb 27 04:30:06 EST 2019
On 27/02/2019 04.14, Alan Bawden wrote:
> Marko Rauhamaa <marko at pacujo.net> writes:
>> I couldn't find an immediate answer in the documentation.
> I suspect that given the history of Python, pretty much everybody has
> always assumed that a Python implementation will not delete local variables
> early. But I agree with you that the Python Language Reference does not
> appear to address this question anywhere!
That's probably right. However, due to the nature of Python, things like
this are possible:
>>> v = 'a'
>>> def f():
... a, b, c = 1, 2, 3
... return eval(v)
>>> v = 'b'
What I mean to say is that it's not in general trivial (or even
possible) to tell if a local is referred to later in the function body.
I think we can say that a Python interpreter can't delete a local before
having executed any statement that could *possibly* access it.
If the inspect module's stack frame inspection machinery is supported,
then any function call might access any local... (though I don't think a
compliant Python implementation necessarily has to support the inspect
module fully). And we're back to where we started.
More information about the Python-list