On 27/02/2019 04.14, Alan Bawden wrote: > Marko Rauhamaa <ma...@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) ... >>> f() 1 >>> v = 'b' >>> f() 2 >>> 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. -- Thomas -- https://mail.python.org/mailman/listinfo/python-list